Use Cases

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しておきましょう。

#Claude Code #Docker #Docker Compose #development environment #infrastructure
मुफ़्त

मुफ़्त PDF: 5 मिनट में Claude Code चीटशीट

बस अपना ईमेल दर्ज करें और हम तुरंत A4 एक-पृष्ठ चीटशीट PDF भेज देंगे।

हम आपकी व्यक्तिगत जानकारी की सुरक्षा करते हैं और स्पैम नहीं भेजते।

Masa

लेखक के बारे में

Masa

Claude Code का गहराई से उपयोग करने वाले इंजीनियर। claudecode-lab.com चलाते हैं, जो 10 भाषाओं में 2,000 से अधिक पेजों वाला टेक मीडिया है।