2026-02-21 20:01:30 +00:00
2026-02-21 20:01:30 +00:00
2026-02-15 17:18:12 +00:00
2026-02-15 17:18:12 +00:00
2026-02-21 20:01:30 +00:00
2026-02-15 17:18:12 +00:00
2025-12-07 09:44:04 +00:00

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 premennych (.devcontainer/.env)
  • skript na build/push devcontainer image (scripts/publish-devcontainer-image.ps1)
  • VS Code tasky na build/push (.vscode/tasks.json)
  • hlavny Dockerfile pre aplikacny image (Dockerfile)

Konfiguracia cez .devcontainer/.env

.devcontainer/.env je centralne miesto pre devcontainer premenne. Pouziva ho:

  • .devcontainer/docker-compose.yml (image tag, user, volume cesty, container environment)
  • scripts/publish-devcontainer-image.ps1 (tagovanie a push devcontainer image)
  • Dockerfile aplikacie (volitelne cez --build-arg)

Aktualne premenne:

  • PYTHON_BASE - verzia Pythonu pre devcontainer image tag
  • DEVCONTAINER_IMAGE_REV - revizia devcontainer image
  • DEVCONTAINER_IMAGE_PULL_REPO - registry/repo odkial sa image taha pri otvoreni devcontainera
  • DEVCONTAINER_IMAGE_PUSH_REPO - registry/repo kam sa image publikuje
  • PIP_INDEX_URL - pip index URL v kontajneri
  • PIP_ROOT_USER_ACTION - pip spravanie pri root userovi
  • WORKSPACE_DIR - workspace cesta v kontajneri
  • VENV_PATH - cesta k virtualnemu prostrediu
  • REQUIREMENTS_FILE - cesta k requirements suboru pre post_create.sh
  • DEVCONTAINER_RUN_USER - Linux user, pod ktorym bezi devcontainer service
  • APP_USER_ID - UID usera appuser v hlavnom Dockerfile
  • REMOTE_HOME - home adresar pouzity pre .codex a .pypirc mounty

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 image.
  2. Alebo spusti devcontainer: build and push image pre build + push.

Cez terminal

# 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 skusi docker login <registry> a push zopakuje este raz.

Pouzitie vo VS Code

  1. Nastav hodnoty v .devcontainer/.env.
  2. Ak si menil PYTHON_BASE alebo image repo/rev, najprv publikuj novu devcontainer image.
  3. Otvor projekt vo VS Code a pouzi Reopen in Container.

Pri starte kontajnera:

  • image sa taha z DEVCONTAINER_IMAGE_PULL_REPO
  • workspace sa mountuje do /workspace
  • postCreateCommand (.devcontainer/post_create.sh) vytvori .venv a nainstaluje zavislosti z REQUIREMENTS_FILE
  • Python vo VS Code pouziva ${env:VENV_PATH}/bin/python

VS Code extensions a settings

Devcontainer automaticky instaluje tieto VS Code extensions:

  • ms-python.python
  • ms-python.vscode-pylance
  • ms-python.autopep8
  • ms-toolsai.jupyter
  • ms-python.black-formatter
  • ms-python.isort
  • codezombiech.gitignore
  • davidanson.vscode-markdownlint
  • ms-azuretools.vscode-docker
  • docker.docker
  • openai.chatgpt
  • continue.continue

Pouzite VS Code settings v devcontainery:

  • python.formatting.provider: black
  • python.analysis.extraPaths: ["${workspaceFolder}/app"]
  • python.analysis.typeCheckingMode: "basic"
  • python.analysis.diagnosticMode: "workspace"
  • editor.formatOnSave: true
  • python.terminal.activateEnvironment: true
  • python.defaultInterpreterPath: "${env:VENV_PATH}/bin/python"
  • remote.restoreForwardedPorts: false
  • remote.autoForwardPortsSource: "output"
  • debug.javascript.autoAttachFilter: "disabled"

Aplikacny Dockerfile

Hlavny Dockerfile podporuje build argumenty PYTHON_BASE, PIP_INDEX_URL a APP_USER_ID.

Priklad buildu s hodnotami z .devcontainer/.env:

set -a; source .devcontainer/.env; set +a
docker build \
  --build-arg PYTHON_BASE="$PYTHON_BASE" \
  --build-arg PIP_INDEX_URL="$PIP_INDEX_URL" \
  --build-arg APP_USER_ID="$APP_USER_ID" \
  -t myapp:local .
Description
Template projektu pre Python 3.13 v devcontaineri
Readme 40 KiB
Languages
Dockerfile 67.8%
Shell 30.8%
Python 1.4%