はじめに
「Dockerを使いたいけどDockerfileの書き方がわからない」
「docker-composeの設定が複雑でどこから手をつければいいかわからない」
「コンテナが起動しないエラーの原因がわからない」
DockerはモダンなWebアプリケーション開発に欠かせないツールですが、設定の複雑さから敬遠されがちです。Claude Codeを使えば、プロジェクトの構成を分析した上で最適なDocker設定を自動生成できます。
目次
- Claude CodeとDockerの組み合わせのメリット
- Dockerfileの自動生成
- docker-composeの設定生成
- コンテナのトラブルシューティング
- 本番環境向けの最適化
- よく使うDockerコマンドをClaude Codeで実行する
- まとめ
1. Claude CodeとDockerの組み合わせのメリット
プロジェクト分析から最適な設定を生成
Claude Codeはpackage.json・requirements.txt・Gemfileなどから技術スタックを自動判断し、適切なDockerfileを生成します。
エラーメッセージからの自動修正
コンテナ起動時のエラーをそのまま貼り付けるだけで、原因特定と修正を自律的に行います。
ベストプラクティスの自動適用
マルチステージビルド・レイヤーキャッシュの最適化・セキュリティ設定など、Dockerのベストプラクティスを自動で適用します。
2. Dockerfileの自動生成
基本的な指示
> このプロジェクトのDockerfileを作成してください。
プロジェクトの構成を分析して適切なベースイメージを選んでください。
詳細な要件を指定する場合
> このNode.jsプロジェクトのDockerfileを作成してください。
要件:
- Node.js 20のLTSバージョンを使用
- マルチステージビルドで本番イメージを軽量化
- 非rootユーザーで実行するセキュリティ設定
- .dockerignoreも合わせて作成
- イメージサイズを最小化
生成されるDockerfileの例:
# ビルドステージ
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
# 本番ステージ
FROM node:20-alpine AS production
WORKDIR /app
# 非rootユーザーの作成
RUN addgroup -g 1001 -S nodejs && \
adduser -S nextjs -u 1001
COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules
COPY --chown=nextjs:nodejs . .
USER nextjs
EXPOSE 3000
CMD ["node", "server.js"]
フレームワーク別のDockerfile生成
> Next.jsプロジェクトの本番用Dockerfileを作成してください。
スタンドアロンモードを使ってイメージサイズを最小化してください。
> Django + PostgreSQLの開発環境用Dockerfileと
docker-compose.ymlを作成してください。
3. docker-composeの設定生成
開発環境のdocker-compose生成
> このプロジェクトの開発環境用docker-compose.ymlを作成してください。
必要なサービス:
- アプリケーション(Node.js)
- データベース(PostgreSQL 15)
- キャッシュ(Redis 7)
- メール(MailHog:開発用SMTPサーバー)
要件:
- ホットリロードが使えるようにボリュームマウント
- 環境変数は.env.localから読み込む
- ヘルスチェックを設定する
本番環境のdocker-compose生成
> 本番環境用のdocker-compose.ymlを作成してください。
要件:
- リバースプロキシ(Nginx)
- SSL証明書の自動更新(Let's Encrypt + Certbot)
- アプリケーションのスケールアップに対応
- ログの永続化
- 定期バックアップの設定
既存のdocker-composeを改善する
> 現在のdocker-compose.ymlを分析して、以下の問題点を改善してください:
- セキュリティ上の問題点
- パフォーマンスの最適化余地
- ベストプラクティスに沿っていない部分
- ヘルスチェックが設定されていないサービス
4. コンテナのトラブルシューティング
起動エラーの解決
> docker-compose upを実行すると以下のエラーが出て起動できません。
原因を特定して修正してください。
[エラーメッセージを貼り付け]
ログの分析
> docker logs app-containerの出力を確認して、
エラーの原因を教えてください。
[ログを貼り付け]
コンテナ内での直接調査
> アプリケーションコンテナ内に入って、
環境変数が正しく設定されているか確認してください。
また、データベースへの接続が正常かもチェックしてください。
Claude Codeが以下のコマンドを実行して調査します。
docker exec -it app-container sh
# コンテナ内で
env | grep DATABASE
curl -s http://localhost:5432 || echo "DB接続失敗"
よくあるエラーと解決パターン
> 以下のDockerのよくあるエラーを解決してください:
"port is already allocated" ← ポートの競合
> "no space left on device" エラーが出ています。
Dockerのディスク使用量を調べて、
不要なイメージ・コンテナ・ボリュームを安全に削除してください。
5. 本番環境向けの最適化
イメージサイズの最小化
> 現在のDockerイメージサイズが1.2GBあります。
マルチステージビルドと不要ファイルの除外で
できるだけ小さくしてください。
.dockerignoreも最適化してください。
セキュリティの強化
> このDockerfileのセキュリティをチェックして改善してください。
チェック観点:
- rootユーザーでの実行を避ける
- 不要なパッケージをインストールしない
- シークレット情報がイメージに含まれていないか
- ベースイメージの脆弱性(trivy等でスキャン)
ヘルスチェックの設定
> すべてのサービスに適切なヘルスチェックを設定してください。
各サービスの特性に合わせた確認方法を使ってください。
6. よく使うDockerコマンドをClaude Codeで実行する
日常的なDocker操作
> 現在実行中のコンテナの一覧と状態を確認して教えてください
> すべてのコンテナを停止して削除してください。
ボリュームは削除しないでください。
> Dockerのディスク使用量を確認して、
安全に削除できるものをリストアップしてください
イメージのビルドとプッシュ
> 現在のコードでDockerイメージをビルドして、
Docker Hubのusername/appname:v1.2.3にプッシュしてください。
ビルド前にテストを実行して、失敗した場合はプッシュしないでください。
7. まとめ
Claude CodeとDockerの組み合わせでできること:
- プロジェクト分析からDockerfileを自動生成
- 開発・本番環境のdocker-composeを自動設定
- コンテナ起動エラーを自律的に解決
- イメージサイズの最適化・セキュリティ強化
効果的な指示のポイント:
- 使用する言語・フレームワーク・データベースを明示する
- 開発環境か本番環境かを明示する
- エラーは全文コピーして貼り付ける
安全に使うための原則:
- 本番環境への変更は必ずステージング環境で先にテストする
- 本番データベースのボリュームを誤って削除しないよう確認を徹底する
次回の第19回:コスト管理とトークン最適化では、Claude CodeのAPI利用料を抑えるための設定と使い方を解説します。
よくある質問(FAQ)
Q. Dockerの基礎知識がなくてもClaude Codeで使えますか?
A. 基本的な概念(コンテナ・イメージ・ボリュームなど)を理解していると、Claude Codeの提案内容をより正しく判断できます。ただし、Claude Codeに「Dockerの基礎から説明しながら設定してください」と依頼することで、学びながら進めることもできます。
Q. docker-composeで複数のサービスを管理しているとき、どこから調査を始めればいいですか?
A. 「docker-compose ps」で全サービスの状態を確認してからClaude Codeに共有することで、どのサービスが問題かを絞り込みやすくなります。
この記事はClaude Code入門シリーズ(第2部)の第18回です。← 第17回:未経験者の使い方 | 第19回:コスト管理 →
ご質問はお問い合わせページからお気軽にどうぞ。