Konfiguracja kontenerów deweloperskich
Nowy programista dołącza do Twojego zespołu. Spędza dwa dni na konfigurowaniu swojego środowiska: instaluje Node.js, konfiguruje PostgreSQL, walczy z menedżerami wersji Pythona, a następnie odkrywa, że Claude Code potrzebuje określonych zmiennych środowiskowych do pracy z Twoim proxy. Kontenery deweloperskie eliminują to w całości — każdy programista otrzymuje identyczne, wstępnie skonfigurowane środowisko z gotowym do działania Claude Code.
Co wyniesiesz z tego rozdziału
Dział zatytułowany „Co wyniesiesz z tego rozdziału”- Gotową do produkcji konfigurację devcontainer z wstępnie zainstalowanym Claude Code
- Konfigurację GitHub Codespaces dla dostępu do Claude Code przez przeglądarkę
- Wzorce współdzielenia konfiguracji Claude Code w środowiskach kontenerowych
- Zagadnienia bezpieczeństwa związane z uruchamianiem Claude Code w kontenerach
Podstawowa konfiguracja kontenera deweloperskiego
Dział zatytułowany „Podstawowa konfiguracja kontenera deweloperskiego”Plik devcontainer.json
Dział zatytułowany „Plik devcontainer.json”Utwórz .devcontainer/devcontainer.json w swoim repozytorium:
{ "name": "Project Dev Environment", "image": "mcr.microsoft.com/devcontainers/typescript-node:20", "features": { "ghcr.io/devcontainers/features/common-utils:2": {}, "ghcr.io/devcontainers/features/git:1": {} }, "postCreateCommand": "npm install && npm run build", "postStartCommand": "npm install -g @anthropic-ai/claude-code@latest", "forwardPorts": [3000, 5432], "customizations": { "vscode": { "extensions": [ "dbaeumer.vscode-eslint", "esbenp.prettier-vscode" ] } }, "remoteEnv": { "NODE_ENV": "development" }}Własny Dockerfile
Dział zatytułowany „Własny Dockerfile”Aby uzyskać większą kontrolę, użyj pliku Dockerfile:
# .devcontainer/DockerfileFROM mcr.microsoft.com/devcontainers/typescript-node:20
# Install Claude Code globallyRUN npm install -g @anthropic-ai/claude-code@latest
# Install project-specific toolsRUN apt-get update && apt-get install -y \ postgresql-client \ jq \ && rm -rf /var/lib/apt/lists/*
# Pre-configure Claude Code settings directoryRUN mkdir -p /home/node/.claudeOdwołaj się do niego w devcontainer.json:
{ "build": { "dockerfile": "Dockerfile" }}GitHub Codespaces
Dział zatytułowany „GitHub Codespaces”Codespaces udostępniają kontenery deweloperskie hostowane w chmurze, dostępne z przeglądarki lub lokalnego VS Code.
Konfiguracja specyficzna dla Codespaces
Dział zatytułowany „Konfiguracja specyficzna dla Codespaces”{ "name": "Codespace with Claude Code", "image": "mcr.microsoft.com/devcontainers/typescript-node:20", "postStartCommand": "npm install -g @anthropic-ai/claude-code@latest", "secrets": { "ANTHROPIC_API_KEY": { "description": "API key for Claude Code", "documentationUrl": "https://console.anthropic.com/settings/keys" } }, "portsAttributes": { "3000": { "label": "Application", "onAutoForward": "openBrowser" } }}Pole secrets prosi programistów o skonfigurowanie klucza API podczas tworzenia Codespace.
Współdzielenie konfiguracji Claude Code
Dział zatytułowany „Współdzielenie konfiguracji Claude Code”Montowanie lokalnej konfiguracji
Dział zatytułowany „Montowanie lokalnej konfiguracji”Udostępnij swoje lokalne ustawienia Claude Code kontenerowi:
{ "mounts": [ "source=${localEnv:HOME}/.claude,target=/home/node/.claude,type=bind,consistency=cached" ]}To udostępnia Twoje sesje, auto-pamięć i osobiste ustawienia kontenerowi. Zmiany w kontenerze są odzwierciedlane na Twoim hoście.
Konfiguracja na poziomie projektu
Dział zatytułowany „Konfiguracja na poziomie projektu”Ponieważ .claude/settings.json, .claude/commands/ i .claude/agents/ są częścią Twojego repozytorium, są automatycznie dostępne wewnątrz kontenera. Nie jest potrzebna dodatkowa konfiguracja.
Zagadnienia bezpieczeństwa
Dział zatytułowany „Zagadnienia bezpieczeństwa”Obsługa kluczy API
Dział zatytułowany „Obsługa kluczy API”Nigdy nie koduj na stałe kluczy API w devcontainer.json. Użyj jednego z tych podejść:
- Przekazywanie zmiennych środowiskowych:
"${localEnv:ANTHROPIC_API_KEY}" - Sekrety Codespace: Konfigurowane per użytkownik w ustawieniach GitHub
- Skrypt apiKeyHelper: Generuje klucze dynamicznie z menedżera sekretów
Izolacja sieciowa
Dział zatytułowany „Izolacja sieciowa”Kontenery deweloperskie mogą ograniczać dostęp do sieci:
{ "runArgs": ["--network=project-network"], "remoteEnv": { "HTTPS_PROXY": "http://proxy:8080" }}Tryb piaskownicy
Dział zatytułowany „Tryb piaskownicy”Piaskownica Claude Code domyślnie ogranicza dostęp do systemu plików. W kontenerze zapewnia to ochronę wielowarstwową:
{ "remoteEnv": { "CLAUDE_CODE_SANDBOX": "1" }}Kiedy to nie działa
Dział zatytułowany „Kiedy to nie działa”Claude Code nie został znaleziony po przebudowie kontenera: postStartCommand uruchamia się po każdym starcie kontenera, ale postCreateCommand tylko podczas tworzenia. Umieść instalację Claude Code w postStartCommand, aby upewnić się, że przetrwa przebudowy.
Zamontowany katalog .claude ma złe uprawnienia: Użytkownicy kontenera mogą różnić się od Twojego użytkownika hosta. Dodaj postStartCommand do naprawienia uprawnień: "sudo chown -R node:node /home/node/.claude".
Klucz API niedostępny w terminalu kontenera: Upewnij się, że używasz ${localEnv:ANTHROPIC_API_KEY} (nie ${containerEnv}). Prefiks localEnv przekazuje zmienne z Twojej maszyny hosta.
Sesje z hosta nie pojawiają się w kontenerze: Sesje są przechowywane według ścieżki katalogu. Jeśli ścieżka projektu różni się między hostem a kontenerem (np. /Users/you/project vs /workspaces/project), sesje nie będą pasować. To oczekiwane zachowanie.
Co dalej
Dział zatytułowany „Co dalej”- Integracja korporacyjna — Zarządzane ustawienia dla wdrożeń opartych na kontenerach
- GitHub Actions — Przepływy pracy CI/CD uzupełniające Twoją konfigurację kontenera deweloperskiego
- Konfiguracja proxy — Konfiguracja dostępu do sieci w kontenerach