CLAUDE LABEN
MCP — 7月28日のMCP仕様リリース候補でMcp-Session-Idヘッダーが廃止されステートレス化します。リモートMCPサーバーはスティッキーセッションなしで運用できますAPPS — 同じ仕様でMCP Apps(サーバー側でレンダリングするUI)と、長時間処理向けのTasks拡張が加わりますMEMORY — Python 0.116.0・TypeScript 0.110.0・Go 1.56.0など各SDKが、メモリストア呼び出しにagent-memory-2026-07-22ヘッダーを送るようになりましたSPILL — agent_toolsetやMCPツールの出力が10万文字を超えると自動でサンドボックス内のファイルへ退避され、モデルには切り詰めたプレビューが渡りますBG — 2分を超えるMCPツール呼び出しが自動でバックグラウンドへ移り、セッションを止めなくなりました。CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますRESUME — エージェントビューで/resumeを打つと過去セッションのピッカーが開き、選んだものをバックグラウンドセッションとして再開できますMCP — 7月28日のMCP仕様リリース候補でMcp-Session-Idヘッダーが廃止されステートレス化します。リモートMCPサーバーはスティッキーセッションなしで運用できますAPPS — 同じ仕様でMCP Apps(サーバー側でレンダリングするUI)と、長時間処理向けのTasks拡張が加わりますMEMORY — Python 0.116.0・TypeScript 0.110.0・Go 1.56.0など各SDKが、メモリストア呼び出しにagent-memory-2026-07-22ヘッダーを送るようになりましたSPILL — agent_toolsetやMCPツールの出力が10万文字を超えると自動でサンドボックス内のファイルへ退避され、モデルには切り詰めたプレビューが渡りますBG — 2分を超えるMCPツール呼び出しが自動でバックグラウンドへ移り、セッションを止めなくなりました。CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますRESUME — エージェントビューで/resumeを打つと過去セッションのピッカーが開き、選んだものをバックグラウンドセッションとして再開できます
記事一覧/Claude Code
Claude Code/2026-04-09上級

Claude Code × Docker — DevContainer・マルチステージビルド・本番デプロイまで

Claude Code と Docker を組み合わせた本番級の開発ワークフロー。DevContainer 環境構築からマルチステージビルド最適化、GitHub Actions CI/CD、Kubernetes 本番デプロイまでを実際のコード例とともに扱います。

Claude Code203Docker5DevContainerCI/CD18Kubernetes本番環境5

プレミアム記事

コンテナ技術は現代のソフトウェア開発に欠かせない存在です。しかし「Dockerfileをどう書けばいいか」「DevContainerの設定が複雑すぎる」「本番環境への移行でトラブルが続く」といった悩みを抱える開発者は少なくありません。

Claude Codeは、こうしたDockerにまつわる課題を劇的に解決するツールです。自然言語でDockerfileの最適化を依頼したり、エラーメッセージをそのまま貼り付けて原因究明を任せたり、複雑なKubernetes YAMLの生成を自動化したりできます。

以下では Claude Code と Docker を組み合わせた本番級の開発・デプロイワークフローを、実際のコード例とともに段階的に追います。DevContainer の初期設定から始まり、マルチステージビルド、Docker Compose によるローカル開発環境、GitHub Actions を使った CI/CD、そして Kubernetes または Fly.io への本番デプロイまで、一連の流れを扱います。

対象読者は、Docker の基礎知識を持ちながらも本番運用に踏み込めていない中〜上級エンジニアです。Claude Code を使うことで、これまで数日かかっていたインフラ設計・実装を数時間で完成させる体験をお届けします。


DevContainer × Claude Code — 再現性の高い開発環境を5分で構築する

DevContainer とは何か

DevContainerは、VS CodeまたはGitHub Codespacesで使用できる「開発環境をコードとして定義する」仕組みです。チームメンバー全員が同一の環境で開発でき、「自分のマシンでは動くのに」問題を根絶できます。

Claude Codeでは、.devcontainer/devcontainer.json の生成・最適化を自然言語で依頼できます。

Claude Codeを使ったDevContainer生成

プロジェクトのルートで以下のように依頼します:

# Claude Codeに依頼する例
claude "Node.js 22 + TypeScript + PostgreSQL 16を使うプロジェクト用のdevcontainer.jsonを作成してください。
postCreateCommandでnpm installも実行されるようにしてください。"

生成される .devcontainer/devcontainer.json の例:

{
  "name": "Node.js + TypeScript + PostgreSQL",
  "dockerComposeFile": "docker-compose.yml",
  "service": "app",
  "workspaceFolder": "/workspace",
  "features": {
    "ghcr.io/devcontainers/features/node:1": {
      "version": "22"
    },
    "ghcr.io/devcontainers/features/git:1": {},
    "ghcr.io/devcontainers/features/github-cli:1": {}
  },
  "customizations": {
    "vscode": {
      "extensions": [
        "dbaeumer.vscode-eslint",
        "esbenp.prettier-vscode",
        "ms-vscode.vscode-typescript-next",
        "bradlc.vscode-tailwindcss"
      ],
      "settings": {
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "esbenp.prettier-vscode"
      }
    }
  },
  "postCreateCommand": "npm install",
  "remoteUser": "node",
  "forwardPorts": [3000, 5432],
  "portsAttributes": {
    "3000": { "label": "App Server", "onAutoForward": "notify" },
    "5432": { "label": "PostgreSQL", "onAutoForward": "silent" }
  }
}

DevContainerのよくある問題をClaude Codeで解決する

DevContainerが起動しない場合、エラーメッセージをそのままClaude Codeに渡します:

claude "以下のエラーでDevContainerが起動できません。原因と修正方法を教えてください:
[error] failed to solve: failed to read dockerfile: open .devcontainer/Dockerfile: no such file or directory"

Claude Codeは問題を即座に特定し、不足しているDockerfileの生成や devcontainer.json の修正を提案します。


マルチステージビルド — 本番イメージを最小化する技術

なぜマルチステージビルドが必要か

開発用のNode.jsアプリをそのままDockerイメージにすると、node_modules も含めて数GBになることがあります。本番環境では、ビルド済みの成果物のみを含む軽量イメージが必要です。

マルチステージビルドは、ビルド環境と実行環境を分離し、本番イメージを100MB以下に抑える技術です。

Claude Codeによるマルチステージ Dockerfile 生成

claude "Next.js 15アプリ用のマルチステージDockerfileを作成してください。
要件:
- ビルドステージ: node:22-alpine ベース
- 本番ステージ: node:22-alpine (distrolessでも可)
- セキュリティのため非rootユーザーで実行
- .next/standalone を活用した最小構成
- ARGでNODE_ENVを受け取れる構造"

生成された Dockerfile の例:

# ──────────────────────────────────
# Stage 1: 依存関係インストール
# ──────────────────────────────────
FROM node:22-alpine AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app
 
# package.jsonとlockfileのみを先にコピー(キャッシュ活用)
COPY package.json package-lock.json* ./
RUN npm ci --only=production --ignore-scripts
 
# ──────────────────────────────────
# Stage 2: ビルド
# ──────────────────────────────────
FROM node:22-alpine AS builder
WORKDIR /app
 
COPY --from=deps /app/node_modules ./node_modules
COPY . .
 
# Standalone出力を有効化(next.config.tsで output: 'standalone' 設定済み前提)
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run build
 
# ──────────────────────────────────
# Stage 3: 本番ランナー(最小サイズ)
# ──────────────────────────────────
FROM node:22-alpine AS runner
WORKDIR /app
 
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
ENV NEXT_TELEMETRY_DISABLED=1
ENV PORT=3000
 
# セキュリティ: 非rootユーザーを作成
RUN addgroup --system --gid 1001 nodejs && \
    adduser --system --uid 1001 nextjs
 
# standaloneビルドに必要なファイルのみコピー
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
 
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1
 
CMD ["node", "server.js"]

このDockerfileを使うと、最終イメージサイズは約80〜120MBに抑えられます(node_modules込みで数GBになる開発イメージと比較して約90%削減)。

イメージサイズの検証

# ビルドと確認
docker build -t myapp:prod .
docker images myapp
 
# 期待する出力例:
# REPOSITORY   TAG    IMAGE ID       CREATED         SIZE
# myapp        prod   a1b2c3d4e5f6   2 minutes ago   118MB

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
DevContainer設定で詰まっていた人が、Claude Codeとのスムーズな統合環境を今日から構築できる
マルチステージビルド・Docker Compose・セキュリティハードニングの実装パターンをすぐに手元のプロジェクトに応用できる
GitHub Actions × Docker × Claude Codeの自動化パイプラインで、手動デプロイ作業をゼロに近づけられる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Claude Code2026-06-18
SessionEnd フックに後片付けとログ記録を寄せる
Claude Code に追加されたポストセッションフックを使い、セッション終了後の一時ファイル削除とログ記録を自動化する方法を、複数リポジトリを順に処理する運用の実例とともにまとめました。
Claude Code2026-06-14
PR ごとに走る CI が月次クレジットを溶かす前に — Claude Code GitHub Actions の消費を抑える3層ガード
6/15 から Claude Code GitHub Actions は繰越なしの月次クレジットで課金されます。全PRでレビューを走らせると月初に枯れます。実行条件・1回の上限・消費の可視化という3層で、CIを止めずに消費を抑えた設計と動くワークフローをまとめました。
Claude Code2026-05-28
Claude Code × Xcode Cloud — ci_scripts と TestFlight 自動配信を 1 週間で動かすまでの実装メモ
Fastlane で長く回してきた個人アプリの CI を Xcode Cloud に移行した実装メモです。ci_scripts/ の3つのフックスクリプト、TestFlight 自動配信、dSYM アップロードまで、Claude Code との具体的なやり取りを残しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →