71 lines
2.5 KiB
Markdown
71 lines
2.5 KiB
Markdown
# 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.
|