buildovanie cez task a verzia na jednom mieste
This commit is contained in:
91
README.md
91
README.md
@@ -1,21 +1,70 @@
|
||||
# Template projektu pre Python 3.13
|
||||
|
||||
## Template obsahuje
|
||||
|
||||
* definíciu docker kontajnera s podporu docker a git
|
||||
* python 3.13
|
||||
* Nastavenie vscode
|
||||
* .dockerignore a .gitignore
|
||||
* Hello world aplikáciu
|
||||
* vzorový Dockerfile pre aplikáciu
|
||||
|
||||
> Prvé otvorenie projektu môže trvať aj 10 min. Musí sa buildovať image.
|
||||
|
||||
## Vytvorenie devcontainera
|
||||
|
||||
Pri vytvorení devkontajnera sa automaticky:
|
||||
|
||||
* kontroluje, či je vytvorené venv, ak nie, vytvorí sa a aktualizuje pip
|
||||
* aktualizujú sa závislosti
|
||||
* nastaví sa git credential helper
|
||||
|
||||
# Python Project Template
|
||||
|
||||
Template pre Python projekt s Dev Container workflow, kde sa devcontainer image taha z registry a nebuildi sa pri kazdom otvoreni.
|
||||
|
||||
## Co projekt obsahuje
|
||||
|
||||
- devcontainer konfiguraciu (`.devcontainer/devcontainer.json`)
|
||||
- compose definiciu pre devcontainer (`.devcontainer/docker-compose.yml`)
|
||||
- centralne nastavenie verzie Pythonu a image tagov (`.devcontainer/.env`)
|
||||
- skript na build/push devcontainer image (`scripts/publish-devcontainer-image.ps1`)
|
||||
- VS Code tasky na build/push (`.vscode/tasks.json`)
|
||||
- vzorovy `Dockerfile` pre aplikaciu (`Dockerfile`)
|
||||
|
||||
## Centralne nastavenie verzie a repo
|
||||
|
||||
Vsetko sa riadi cez `.devcontainer/.env`:
|
||||
|
||||
- `PYTHON_BASE` - verzia Pythonu pre devcontainer image
|
||||
- `DEVCONTAINER_IMAGE_PULL_REPO` - odkial sa image taha pri otvoreni devcontainera (napr. `docker.masara.eu/python`)
|
||||
- `DEVCONTAINER_IMAGE_PUSH_REPO` - kam sa image pushuje pri publikovani (napr. `repo.masara.eu/python`)
|
||||
- `DEVCONTAINER_IMAGE_REV` - revizia image (napr. `0.1`)
|
||||
|
||||
## Build a publish devcontainer image
|
||||
|
||||
Predpoklady:
|
||||
|
||||
- Docker je nainstalovany a bezi
|
||||
- mas pristup do push registry (`repo.masara.eu`)
|
||||
|
||||
### Cez VS Code task
|
||||
|
||||
1. Spusti task `devcontainer: build and push image`.
|
||||
2. Task zavola skript `scripts/publish-devcontainer-image.ps1 -Push`.
|
||||
|
||||
### Cez terminal
|
||||
|
||||
```powershell
|
||||
# iba build
|
||||
powershell -ExecutionPolicy Bypass -File scripts/publish-devcontainer-image.ps1
|
||||
|
||||
# build + push
|
||||
powershell -ExecutionPolicy Bypass -File scripts/publish-devcontainer-image.ps1 -Push
|
||||
```
|
||||
|
||||
Poznamka:
|
||||
|
||||
- Ak `docker push` zlyha (napr. neautorizovany pristup), skript spravi fallback `docker login <registry>` a push zopakuje este raz.
|
||||
|
||||
## Pouzitie pri vytvoreni/otvoreni projektu
|
||||
|
||||
1. Naklonuj alebo vytvor projekt z tejto sablony.
|
||||
2. Nastav hodnoty v `.devcontainer/.env` (hlavne `PYTHON_BASE`, pull/push repo, revision).
|
||||
3. Ak menis base image (napr. Python verziu), publikuj novu verziu devcontainer image do push registry.
|
||||
4. Otvor projekt vo VS Code a pouzi `Reopen in Container`.
|
||||
|
||||
Devcontainer sa spusti z image definovaneho v `.devcontainer/docker-compose.yml`:
|
||||
|
||||
- image sa taha z `DEVCONTAINER_IMAGE_PULL_REPO`
|
||||
- workspace je pripojeny bind mountom do `/workspace`
|
||||
- `postCreateCommand` vytvori `.venv` a nainstaluje zavislosti z `requirements.txt`
|
||||
|
||||
## Bezne scenare
|
||||
|
||||
- Chcem iba zmenit Python verziu:
|
||||
1. Zmen `PYTHON_BASE` v `.devcontainer/.env`.
|
||||
2. Spusti `devcontainer: build and push image`.
|
||||
3. Vo VS Code daj `Rebuild/Reopen in Container`.
|
||||
|
||||
- Chcem zmenit iba aplikacny kod:
|
||||
- Nerebuildi sa devcontainer image, staci reopen/restart kontajnera podla potreby.
|
||||
|
||||
Reference in New Issue
Block a user