Use Cases

Guide d'intégration de Claude Code et Docker : optimiser le développement de conteneurs

Découvrez guide d'intégration de Claude Code et Docker : optimiser le développement de conteneurs. Conseils pratiques et exemples de code inclus.

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の書き方完全ガイドを参照してください。

Summary

Claude CodeとDockerの組み合わせは、環境構築の手間を大幅に削減します。Dockerfileの生成、docker-composeの設定、イメージの最適化まで、一貫してClaude Codeに任せることで、アプリケーション開発に集中できます。

Dockerの詳細はDocker公式ドキュメント、Claude CodeについてはAnthropic公式ドキュメントを参照してください。

#Claude Code #Docker #containers #DevOps #infrastructure