buildovanie cez task a verzia na jednom mieste

This commit is contained in:
Alojz Masár
2026-02-15 17:12:24 +01:00
parent a1628f04a3
commit b962c1be7f
7 changed files with 239 additions and 95 deletions

View File

@@ -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.