Konfiguracja Docker i Kubernetes przez CLI
Konteneryzujesz swoją aplikację po raz pierwszy. Tutorial Dockerfile pozwala Ci uzyskać działający obraz w dziesięć minut — 1.2 GB, działający jako root, bez health check, bez obsługi sygnałów i z cache buildu, który się unieważnia przy każdej zmianie kodu. Tutorial Kubernetes pozwala Ci uruchomić poda — bez limitów zasobów, bez proby readiness, bez pod disruption budget i z sekretami zahardkodowanymi w manifeście. Przejście od “to działa” do “to jest gotowe do produkcji” zabiera kolejne dwa dni researchu. Claude Code zwija to w jedną, dobrze ustrukturyzowaną rozmowę.
Co z tego wyniesiesz
Dział zatytułowany „Co z tego wyniesiesz”- Workflow Claude Code do generowania zoptymalizowanych, bezpiecznych Dockerfiles i wielousługowych stacków Docker Compose z Twojego istniejącego projektu
- Prompty gotowe do skopiowania, które produkują manifesty Kubernetes z odpowiednimi health checks, limitami zasobów, autoscaling i kontekstami bezpieczeństwa
- Podejście do generowania chartów Helm, które tworzy sparametryzowane, specyficzne dla środowiska wdrożenia
Produkcyjne Dockerfiles z analizy projektu
Dział zatytułowany „Produkcyjne Dockerfiles z analizy projektu”Claude Code czyta Twój projekt i generuje Dockerfile, który pasuje — nie generyczny szablon.
Claude Code wykrywa, czy budujesz projekt Node.js, Python, Go, czy wielojęzykowy i generuje odpowiednio. Dla aplikacji Node.js oddziela warstwę npm ci od warstwy COPY . ., tak aby instalacja zależności była cachowana, chyba że package-lock.json się zmieni. Dla aplikacji Go produkuje pojedynczy statyczny binarny w końcowym etapie FROM scratch.
Po wygenerowaniu, zwaliduj obraz:
# Zbuduj i sprawdź rozmiar obrazudocker build -t myapp:test . && docker images myapp:test
# Uruchom skanowanie bezpieczeństwadocker scout cve myapp:test
# Zweryfikuj, że health check działadocker run -d --name test myapp:test && sleep 5 && docker inspect --format='{{.State.Health.Status}}' testPotem iteruj:
The image is 280 MB because it includes the entire node_modules. Switch to a production prune step that removes devDependencies after building, and copy only node_modules and dist to the runtime stage.Docker Compose do developmentu
Dział zatytułowany „Docker Compose do developmentu”Lokalny development powinien odzwierciedlać produkcję tak blisko, jak to możliwe. Claude Code generuje stos Docker Compose, który zawiera wszystkie Twoje zależności.
Health check z condition: service_healthy na depends_on jest krytyczny. Bez tego Twój kontener aplikacji startuje zanim PostgreSQL jest gotowy przyjmować połączenia, powodując crashe przy starcie.
Dla zespołów z wieloma serwisami:
Extend the Docker Compose to include our microservices: api-gateway (port 3000), user-service (port 3001), order-service (port 3002), and notification-service (port 3003). Each service has its own Dockerfile. Add a shared network, service-to-service communication via container names, and a single command to start the full stack. Also add an Nginx reverse proxy that routes /api/users/* to user-service, /api/orders/* to order-service, etc.Manifesty Kubernetes od zera
Dział zatytułowany „Manifesty Kubernetes od zera”YAML Kubernetes jest gadatliwy i podatny na błędy. Claude Code generuje kompletne, gotowe do produkcji manifesty.
Generate Kubernetes manifests for deploying our application. Include: 1) Deployment with 3 replicas, rolling update strategy (maxSurge 1, maxUnavailable 0), pod anti-affinity to spread across nodes, 2) Service (ClusterIP) pointing to port 3000, 3) Ingress with TLS via cert-manager and rate limiting annotations, 4) ConfigMap for non-secret configuration (LOG_LEVEL, CACHE_TTL), 5) Secret references for DATABASE_URL and API keys (reference external secrets, do not hardcode values), 6) HorizontalPodAutoscaler scaling 3-10 replicas based on CPU (70%) and memory (80%), with scale-down stabilization of 5 minutes, 7) PodDisruptionBudget (minAvailable: 2), 8) resource requests (256Mi memory, 250m CPU) and limits (512Mi memory, 500m CPU), 9) liveness probe on /health, readiness probe on /ready, startup probe with 30-second failure threshold. Set security context to non-root, read-only filesystem, no privilege escalation.Generowanie chartu Helm
Dział zatytułowany „Generowanie chartu Helm”Charty Helm zamieniają Twoje manifesty Kubernetes w sparametryzowane, wielokrotnego użytku pakiety.
Po wygenerowaniu, zwaliduj chart:
# Zlintuj charthelm lint ./chart
# Wyrenderuj szablony bez wdrażania (dry run)helm template myapp ./chart -f chart/values-staging.yaml
# Wdróż na staginghelm upgrade --install myapp ./chart -f chart/values-staging.yaml -n stagingBezpieczeństwo kontenerów
Dział zatytułowany „Bezpieczeństwo kontenerów”Bezpieczeństwo kontenerów nie jest opcjonalne. Claude Code może utwardzić Twoje kontenery od początku.
Review our Dockerfile and Kubernetes manifests for security issues. Check: 1) running as root (should be non-root), 2) using latest tag (should pin a specific version), 3) missing security context (should set readOnlyRootFilesystem, allowPrivilegeEscalation: false), 4) secrets in environment variables (should use Kubernetes Secrets or an external secret manager), 5) missing network policies (should restrict pod-to-pod communication), 6) container image from untrusted registry, 7) capabilities that should be dropped. Fix every issue and generate a NetworkPolicy that allows only the required traffic.Buildy wieloarchitekturowe
Dział zatytułowany „Buildy wieloarchitekturowe”Jeśli Twój zespół używa zarówno maszyn Intel, jak i ARM (Mac M-series), potrzebujesz wieloarchitekturowych obrazów Docker.
Update our Dockerfile and CI pipeline to build multi-architecture images (linux/amd64 and linux/arm64). Use docker buildx with GitHub Actions cache. The build step should produce a single manifest that Docker automatically resolves to the correct architecture. Also update our docker-compose.yml to use platform: linux/amd64 for services that do not support ARM (like some database images).Gdy to się psuje
Dział zatytułowany „Gdy to się psuje”Build Docker jest wolny, ponieważ cache unieważnia się przy każdej zmianie. Kolejność warstw ma znaczenie. COPY package*.json . musi przyjść przed COPY . ., aby zmiany w kodzie nie unieważniały cache zależności. Zapytaj Claude Code: “Reorder our Dockerfile layers to maximize cache reuse. The dependency installation layer should only rebuild when the lockfile changes.”
Pody Kubernetes crash-loop z OOMKilled. Limit pamięci jest za niski dla faktycznego użycia Twojej aplikacji. Zapytaj Claude Code: “Our pods are getting OOMKilled with a 512Mi limit. Analyze our application’s memory usage patterns and recommend appropriate resource requests and limits. Also add a memory monitoring sidecar that exports usage to Prometheus.”
Chart Helm działa na staging, ale zawodzi na produkcji. Zazwyczaj brakująca wartość lub zahardkodowane odniesienie. Zapytaj Claude Code: “Compare our values-staging.yaml and values-production.yaml with the template references. Find any template variable that is used but not defined in one of the values files.”
Voluminy Docker Compose mają problemy z uprawnieniami. Pliki utworzone wewnątrz kontenera są własnością roota, ale Twój użytkownik hosta nie może ich edytować. Użytkownik non-root wewnątrz kontenera i Twój użytkownik hosta mają różne UID. Zapytaj Claude Code: “Fix the volume permission issue by making the container user UID match our host user UID. Add a build arg for USER_UID that defaults to 1000.”
Health check przechodzi, ale aplikacja faktycznie nie jest gotowa. Endpoint /health, który po prostu zwraca 200, nie dowodzi, że aplikacja może obsługiwać ruch. Zapytaj Claude Code: “Update our readiness probe endpoint to check: database connection pool has available connections, Redis is reachable, and the last successful background job ran within the last 5 minutes.”