Use Cases

Claude Code and Docker Integration Guide: Streamlining Container Development

Claude Code and Docker Integration Guide: Streamlining Container Development. 코드 예시가 포함된 실전 가이드입니다.

Docker개발をClaude Code로 가속화하기

Docker環境のセットアップは설정파일が多く、初学者には難しい部分もあります。Claude Code를 활용하면 Dockerfileやdocker-compose.ymlの생성から최적화まで효율적으로進められます。

Dockerfileの생성と최적화

マルチステージ빌드の생성

> Node.js + TypeScript프로젝트用のDockerfile를 생성해줘。
> 要件:
> - マルチステージ빌드で本番イメージを軽量化
> - pnpmを使用
> - ヘルスチェック설정
> - non-root사용자で実行
# ビルドステージ
FROM node:20-slim AS builder
RUN corepack enable && corepack prepare pnpm@latest --activate
WORKDIR /app

COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build

# プロダクションステージ
FROM node:20-slim AS runner
RUN corepack enable && corepack prepare pnpm@latest --activate

RUN addgroup --system --gid 1001 appgroup && \
    adduser --system --uid 1001 appuser

WORKDIR /app

COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
COPY --from=builder --chown=appuser:appgroup /app/package.json ./
COPY --from=builder --chown=appuser:appgroup /app/pnpm-lock.yaml ./

RUN pnpm install --frozen-lockfile --prod

USER appuser

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1

EXPOSE 3000
CMD ["node", "dist/index.js"]

docker-compose.ymlの생성

개발 환경全体をdocker-composeで구축します。

> 다음의サービスを含むdocker-compose.yml를 생성해줘。
> - app: Node.js앱(핫 리로드대응)
> - db: PostgreSQL 16
> - redis: Redis 7
> - adminer: DB관리UI
version: "3.9"

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - DATABASE_URL=postgresql://postgres:password@db:5432/myapp
      - REDIS_URL=redis://redis:6379
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started

  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
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

  adminer:
    image: adminer
    ports:
      - "8080:8080"

volumes:
  postgres_data:

既存Dockerfileの최적화

> 現在のDockerfileを分析して、빌드시간短縮と
> イメージサイズ削減のための최적화を行って。

Claude Code는 以下와 같은改善を提案・実行します。

  • レイヤー캐시の최적화(依存関係の설치を先に実行)
  • 不要な파일の.dockerignoreへの추가
  • マルチステージ빌드への変換
  • 軽量ベースイメージへの변경

컨테이너内での디버깅

> docker-compose up で起動したapp컨테이너が起動に실패する。
> 로그を확인して原因を特定・수정して。
# Claude Codeが実行するコマンド例
docker-compose logs app --tail 50
docker-compose exec app sh -c "node -e 'console.log(process.env.DATABASE_URL)'"

디버깅の일반적인テクニック에 대해서는디버깅テクニック完全가이드도 참고하세요.

CI/CDでのDocker활용

Dockerイメージの빌드とプッシュをCI/CDに통합するパターンはCI/CD파이프라인구축가이드で解説しています。

CLAUDE.mdにDocker関連ルールを記載

## Docker開発ルール
- 開発にはdocker-compose upを使用すること
- テストはdocker-compose exec app npm testで実行
- 本番Dockerfileはマルチステージビルドを使用
- .dockerignoreを適切に設定すること

CLAUDE.mdの書き方はCLAUDE.mdの書き方完全가이드를 참고하세요.

정리

Claude Code와Dockerの組み合わせは、環境구축の手間を大幅に削減します。Dockerfileの생성、docker-composeの설정、イメージの최적화まで、一貫してClaude Code에任せることで、애플리케이션개발に集中할 수 있습니다。

Docker의 상세 정보는Docker공식 문서、Claude Code에ついてはAnthropic공식 문서를 참고하세요.

#Claude Code #Docker #containers #DevOps #infrastructure