Use Cases

Docker Compose dengan Claude Code

Pelajari tentang docker compose menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.

あるpengembangan環境をpembangunan Docker Composeで再現性

Docker Compose 複数 container definisi・manajemen tools 、pengembangan環境 pembangunan 大幅 efisiensi bisa dilakukan.Claude Code service構成 設計 dari Dockerfile optimasiま 、infra構成 juga スムーズ サポート.

構成 full-stackpengembangan環境

Claude Code proyek全体 構成 依頼し.

> Next.js + PostgreSQL + Redis pengembangan環境 Docker Compose dengan pembangunanして。
> hot reloaddukungan、初期データ投入、ヘルスチェック付き dengan 。
# 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:

optimasi pengembangan用Dockerfile

hot reload dukungan pengembangan用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"]

本番用マルチステージbuild

本番deploy用 optimasiされた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"]

構成file分離 環境別

pengembangan・test・本番 pengaturan 分離 pola.

# 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でcommandを簡略化

よく使うcommand Makefile ま dan め.

.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 使えば、チーム全員 同じpengembangan環境 mudah 再現 bisa dilakukan.Claude Code pemanfaatanすれば、service構成、Dockerfileoptimasi、環境分離 dll. infrapengaturan efisien pembangunandimungkinkan.

container化されたpengembangan環境 さらなるintegrasi Dev Containerpengaturanpanduan 、CI/CDpipeline dan integrasi CI/CDセットアップpanduan silakan lihat.Docker Compose公式dokumen juga konfirmasi おき.

#Claude Code #Docker #Docker Compose #pengembangan環境 #infrastructure