Claude Code के साथ Docker Compose
Claude Code का उपयोग करके docker compose सीखें। Practical tips और code examples शामिल हैं।
Docker Composeで再現性のあるdevelopment environment buildする
Docker Composeは複数のcontainerを定義・managementするツールで、development environmentのbuildを大幅にefficiency improvementでき है।Claude Codeはservice構成の設計 सेDockerfileのoptimization तक、インフラ構成もスムーズにサポートし है।
フルスタックdevelopment environmentの構成
Claude CodeにProject全体の構成を依頼 करें।
> Next.js + PostgreSQL + Redisのdevelopment environmentをDocker Composeでbuildして。
> ホットリロードsupport、初期data投入、ヘルスcheck付きで。
# docker-compose.yml
version: "3.9"
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
- /app/.next
environment:
- DATABASE_URL=postgresql://postgres:password@db:5432/myapp
- REDIS_URL=redis://redis:6379
- NODE_ENV=development
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
command: npm run dev
db:
image: postgres:16-alpine
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
- ./docker/init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
mailhog:
image: mailhog/mailhog
ports:
- "1025:1025"
- "8025:8025"
volumes:
postgres_data:
redis_data:
development用Dockerfileのoptimization
ホットリロードにsupportしたdevelopment用Dockerfile है।
# Dockerfile.dev
FROM node:20-alpine
WORKDIR /app
# packagefileのみ先にコピーしてcacheutilization
COPY package.json package-lock.json ./
RUN npm ci
# ソースcodeはボリュームマウントで共有
# COPYは不要(docker-compose.ymlでsettings済み)
EXPOSE 3000
CMD ["npm", "run", "dev"]
本番用マルチステージbuild
本番deploy用のoptimizationされたDockerfile है।
# Dockerfile
# ステージ1: dependenciesのinstall
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production=false
# ステージ2: build
FROM node:20-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
# ステージ3: 本番image
FROM node:20-alpine AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
EXPOSE 3000
ENV PORT 3000
CMD ["node", "server.js"]
環境別の構成file分離
development・test・本番でsettingsを分離するpattern है।
# docker-compose.override.yml(development environment用、自動読み込み)
services:
app:
volumes:
- .:/app
- /app/node_modules
environment:
- DEBUG=true
- LOG_LEVEL=debug
db:
ports:
- "5432:5432"
adminer:
image: adminer
ports:
- "8080:8080"
depends_on:
- db
# docker-compose.test.yml
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
environment:
- DATABASE_URL=postgresql://postgres:password@db:5432/myapp_test
- NODE_ENV=test
command: npm run test:ci
depends_on:
db:
condition: service_healthy
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp_test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
tmpfs:
- /var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 3s
timeout: 3s
retries: 10
Makefileでcommandを簡略化
よくuse करनाcommandをMakefileにまとめ है।
.PHONY: up down build logs db-shell db-migrate db-seed test
up:
docker compose up -d
down:
docker compose down
build:
docker compose build --no-cache
logs:
docker compose logs -f app
db-shell:
docker compose exec db psql -U postgres -d myapp
db-migrate:
docker compose exec app npx prisma migrate dev
db-seed:
docker compose exec app npx prisma db seed
test:
docker compose -f docker-compose.yml -f docker-compose.test.yml run --rm app
clean:
docker compose down -v --remove-orphans
Summary
Docker Composeを使えば、チーム全員がsamedevelopment environmentをsimpleに再現でき है।Claude Code का लाभ उठाकर、service構成、Dockerfileoptimization、環境分離 आदिのインフラsettingsをefficientlybuildpossible है।
container化されたdevelopment environmentのさらなるintegrationはDev Containersettingsガイドを、CI/CDpipelineとのintegrationはCI/CDsetupガイドをदेखें。Docker Composeofficial documentationもconfirmしておきましょう。
Related Posts
Claude Code से अपने Side Projects को Supercharge कैसे करें [Examples के साथ]
Claude Code से personal development projects को dramatically speed up करना सीखें। Real-world examples और idea से deployment तक practical workflow शामिल है।
Claude Code से Refactoring कैसे Automate करें
Claude Code से efficiently code refactoring automate करना सीखें। Real-world projects के लिए practical prompts और concrete refactoring patterns शामिल हैं।
Claude Code के साथ Complete CORS Configuration Guide
Claude Code का उपयोग करके complete CORS configuration guide सीखें। Practical tips और code examples शामिल हैं।