Docker Compose avec Claude Code
Découvrez docker Compose avec Claude Code. Conseils pratiques et exemples de code inclus.
Docker Composeで再現性のある開発環境を構築する
Docker Composeは複数のコンテナを定義・管理するツールで、開発環境の構築を大幅に効率化できます。Claude Codeはサービス構成の設計からDockerfileの最適化まで、インフラ構成もスムーズにサポートします。
フルスタック開発環境の構成
Claude Codeにプロジェクト全体の構成を依頼しましょう。
> Next.js + PostgreSQL + Redisの開発環境をDocker Composeで構築して。
> ホットリロード対応、初期データ投入、ヘルスチェック付きで。
# 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:
開発用Dockerfileの最適化
ホットリロードに対応した開発用Dockerfileです。
# Dockerfile.dev
FROM node:20-alpine
WORKDIR /app
# パッケージファイルのみ先にコピーしてキャッシュ活用
COPY package.json package-lock.json ./
RUN npm ci
# ソースコードはボリュームマウントで共有
# COPYは不要(docker-compose.ymlで設定済み)
EXPOSE 3000
CMD ["npm", "run", "dev"]
本番用マルチステージビルド
本番デプロイ用の最適化されたDockerfileです。
# Dockerfile
# ステージ1: 依存関係のインストール
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production=false
# ステージ2: ビルド
FROM node:20-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
# ステージ3: 本番イメージ
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"]
環境別の構成ファイル分離
開発・テスト・本番で設定を分離するパターンです。
# docker-compose.override.yml(開発環境用、自動読み込み)
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でコマンドを簡略化
よく使うコマンドを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を使えば、チーム全員が同じ開発環境を簡単に再現できます。Claude Codeを活用すれば、サービス構成、Dockerfile最適化、環境分離などのインフラ設定を効率的に構築可能です。
コンテナ化された開発環境のさらなる統合はDev Container設定ガイドを、CI/CDパイプラインとの連携はCI/CDセットアップガイドを参照してください。Docker Compose公式ドキュメントも確認しておきましょう。
Related Posts
Comment booster vos projets personnels avec Claude Code [Avec exemples]
Apprenez à accélérer considérablement vos projets de développement personnels avec Claude Code. Inclut des exemples concrets et un workflow pratique de l'idée au déploiement.
Comment automatiser le refactoring avec Claude Code
Apprenez à automatiser efficacement le refactoring de code avec Claude Code. Inclut des prompts pratiques et des patterns de refactoring concrets pour des projets réels.
Guide complet de configuration CORS avec Claude Code
Découvrez le guide complet de configuration CORS avec Claude Code. Conseils pratiques et exemples de code inclus.