Programování

Dev Containers ve VS Code: stejné vývojové prostředí pro celý tým

Nastavení Dev Containers – devcontainer.json, features, postCreateCommand, Docker Compose s databází a GitHub Codespaces. Nový kolega vyvíjí za pár minut.

12. 10. 2026 · 4 min čtení

„Nainstaluj si Python 3.12, PostgreSQL 16, Node 20, tyhle tři systémové knihovny a pak to snad poběží.“ Dev Containers tenhle rituál nahrazují jedním souborem v repozitáři. VS Code otevře projekt uvnitř Docker kontejneru, kde je vše připravené – pro každého člena týmu stejně.

Co potřebujete

  • Docker (Docker Desktop na Windows/macOS, Docker Engine na Linuxu),
  • VS Code s rozšířením Dev Containers (ms-vscode-remote.remote-containers).

Na Windows doporučujeme mít repozitář naklonovaný uvnitř WSL 2 – souborové operace jsou pak výrazně rychlejší než přes C:\.

Nejjednodušší konfigurace

V kořeni projektu vytvořte .devcontainer/devcontainer.json:

{
  "name": "Python projekt",
  "image": "mcr.microsoft.com/devcontainers/python:3.12",
  "features": {
    "ghcr.io/devcontainers/features/node:1": { "version": "20" }
  },
  "postCreateCommand": "pip install -r requirements.txt",
  "forwardPorts": [8000],
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "charliermarsh.ruff"
      ],
      "settings": {
        "python.defaultInterpreterPath": "/usr/local/bin/python"
      }
    }
  }
}

Pak F1 → Dev Containers: Reopen in Container. První spuštění stáhne image a nainstaluje závislosti, další starty jsou rychlé.

Co jednotlivé klíče dělají

Klíč Význam
image základní image; Microsoft udržuje sadu mcr.microsoft.com/devcontainers/* (python, javascript-node, go, php…)
features hotové doplňky instalované do kontejneru – Node, Docker CLI, GitHub CLI, AWS CLI…
postCreateCommand příkaz po vytvoření kontejneru (instalace závislostí)
postStartCommand příkaz při každém startu
forwardPorts porty přesměrované na váš počítač
customizations.vscode.extensions rozšíření nainstalovaná v kontejneru
remoteUser uživatel, pod kterým pracujete (devcontainer image mají vscode)

Seznam dostupných features najdete na containers.dev.

Vlastní Dockerfile

Potřebujete systémové balíčky? Místo image odkažte na Dockerfile:

{
  "name": "App",
  "build": { "dockerfile": "Dockerfile" },
  "postCreateCommand": "pip install -r requirements.txt"
}

.devcontainer/Dockerfile:

FROM mcr.microsoft.com/devcontainers/python:3.12
RUN apt-get update && apt-get install -y --no-install-recommends \
      libpq-dev gettext \
 && rm -rf /var/lib/apt/lists/*

Aplikace + databáze přes Docker Compose

Realistický projekt potřebuje databázi. Dev Containers umí použít Compose – VS Code se připojí do jedné ze služeb.

.devcontainer/compose.yaml:

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ..:/workspaces/app:cached
    command: sleep infinity
    environment:
      DATABASE_URL: postgres://app:app@db:5432/app

  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: app
      POSTGRES_DB: app
    volumes:
      - devdb:/var/lib/postgresql/data

volumes:
  devdb:

.devcontainer/devcontainer.json:

{
  "name": "App + Postgres",
  "dockerComposeFile": "compose.yaml",
  "service": "app",
  "workspaceFolder": "/workspaces/app",
  "forwardPorts": [8000, 5432],
  "postCreateCommand": "pip install -r requirements.txt && python manage.py migrate"
}

command: sleep infinity udrží kontejner app naživu – aplikaci spouštíte sami v terminálu VS Code. Databáze je dostupná pod jménem db, stejně jako v produkčním Compose. Heslo app je zde v pořádku, protože jde jen o lokální vývoj.

Užitečné příkazy (F1)

  • Dev Containers: Rebuild Container – po změně devcontainer.json nebo Dockerfile.
  • Dev Containers: Rebuild Without Cache – když se něco zasekne.
  • Dev Containers: Clone Repository in Container Volume – kód je přímo v Docker volume; na Windows a macOS nejrychlejší varianta.
  • Dev Containers: Reopen Folder Locally – návrat mimo kontejner.

Git a SSH klíče

Rozšíření automaticky přenese do kontejneru vaši Git identitu (user.name, user.email z lokálního .gitconfig) a přepošle SSH agenta, takže git push funguje bez kopírování klíčů. Podmínkou je běžící lokální ssh-agent s načteným klíčem (ssh-add).

Dev CLI bez VS Code

Stejnou konfiguraci lze použít v terminálu nebo v CI pomocí @devcontainers/cli:

npm install -g @devcontainers/cli
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . pytest

GitHub Codespaces

Tentýž devcontainer.json použije i GitHub Codespaces: na stránce repozitáře Code → Codespaces → Create codespace a za chvíli máte vývojové prostředí v cloudu v prohlížeči nebo ve VS Code. Hodí se pro rychlé review PR nebo slabší počítač. Codespaces jsou nad rámec bezplatné kvóty placené, podmínky ověřte na GitHubu.

Na co pozor

  • Výkon na macOS/Windows: bind mount velkých složek (node_modules) je pomalý. Dejte je do pojmenovaného volume nebo použijte Clone in Container Volume.
  • Velikost: devcontainer image bývají větší než produkční – jsou to nástroje pro vývoj, ne pro nasazení. Produkční image stavějte zvlášť (multi-stage build).
  • Tajné údaje do devcontainer.json nepište; použijte lokální .env, který je v .gitignore.

Kdy se Dev Containers vyplatí

  • tým o více lidech nebo časté zapojování nových přispěvatelů,
  • projekt se specifickými systémovými závislostmi,
  • přepínání mezi projekty s různými verzemi jazyků,
  • open source, kde chcete snížit bariéru pro první příspěvek.

Pro jednoduchý skript, na kterém pracujete sami, je to zbytečná vrstva – stačí virtuální prostředí.