Przejdź do głównej zawartości

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.

  • 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

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"
}
}

Aby uzyskać większą kontrolę, użyj pliku Dockerfile:

# .devcontainer/Dockerfile
FROM mcr.microsoft.com/devcontainers/typescript-node:20
# Install Claude Code globally
RUN npm install -g @anthropic-ai/claude-code@latest
# Install project-specific tools
RUN apt-get update && apt-get install -y \
postgresql-client \
jq \
&& rm -rf /var/lib/apt/lists/*
# Pre-configure Claude Code settings directory
RUN mkdir -p /home/node/.claude

Odwołaj się do niego w devcontainer.json:

{
"build": {
"dockerfile": "Dockerfile"
}
}

Codespaces udostępniają kontenery deweloperskie hostowane w chmurze, dostępne z przeglądarki lub lokalnego VS Code.

{
"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.

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.

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.

Nigdy nie koduj na stałe kluczy API w devcontainer.json. Użyj jednego z tych podejść:

  1. Przekazywanie zmiennych środowiskowych: "${localEnv:ANTHROPIC_API_KEY}"
  2. Sekrety Codespace: Konfigurowane per użytkownik w ustawieniach GitHub
  3. Skrypt apiKeyHelper: Generuje klucze dynamicznie z menedżera sekretów

Kontenery deweloperskie mogą ograniczać dostęp do sieci:

{
"runArgs": ["--network=project-network"],
"remoteEnv": {
"HTTPS_PROXY": "http://proxy:8080"
}
}

Piaskownica Claude Code domyślnie ogranicza dostęp do systemu plików. W kontenerze zapewnia to ochronę wielowarstwową:

{
"remoteEnv": {
"CLAUDE_CODE_SANDBOX": "1"
}
}

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.