docker-containerization について
Next.js と Node.js プロジェクト向けの Docker コンテナ化スキルです。環境別の設定テンプレート、管理スクリプト、ローカル開発から各種オーケストレーション基盤までのデプロイガイドを提供します。
主な機能
- 01本番、開発、静的サイト用 Dockerfile
- 02Docker Compose 設定
- 03ビルド、実行、プッシュ、クリーンアップ用スクリプト
- 04Nginx 設定と .dockerignore
- 05複数プラットフォーム向けデプロイガイド
活用シーン
- 01Next.js アプリの本番コンテナ化
- 02Docker Compose によるローカル開発環境の構築
- 03Kubernetes やクラウド基盤へのコンテナデプロイ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ailabs-393/ ai-labs-claude-skills --skill docker-containerizationインストール後、Claude Code で/docker-containerizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
index.jspackage.jsonassets/.dockerignoredocker-compose.ymlDockerfile.developmentDockerfile.nginxDockerfile.productionnginx.confreferences/container-orchestration.mddocker-best-practices.mdscripts/docker-build.shdocker-cleanup.shdocker-push.shdocker-run.sh詳細
Docker コンテナ化スキル
概要
最新の Web アプリケーション、特に Next.js および Node.js プロジェクト向けに、本番環境で使用できる Docker 設定を生成します。このスキルでは、Dockerfile、docker-compose の設定、コンテナ管理用の bash スクリプト、さまざまなオーケストレーションプラットフォーム向けの包括的なデプロイガイドを提供します。
主な機能
1. Dockerfile の生成
さまざまな環境向けに最適化された Dockerfile を作成します。
本番環境(assets/Dockerfile.production):
- イメージサイズを 85% 削減するマルチステージビルド
- Alpine Linux ベース(最終イメージは約 180MB)
- セキュリティのため、root 以外のユーザーで実行
- ヘルスチェックとリソース制限
開発環境(assets/Dockerfile.development):
- ホットリロードに対応
- 開発用依存関係をすべて含む
- コードをリアルタイムで更新するためのボリュームマウント
Nginx 静的ファイル(assets/Dockerfile.nginx):
- 静的エクスポートを最適化
- Nginx リバースプロキシを同梱
- フットプリントを最小化
2. Docker Compose の設定
assets/docker-compose.yml による複数コンテナのオーケストレーション:
- 開発環境および本番環境のサービス
- ネットワークとボリュームの管理
- ヘルスチェックとログ記録
- 再起動ポリシー
3. コンテナ管理用 Bash スクリプト
docker-build.sh - 充実したオプションでイメージをビルドします:
./docker-build.sh -e prod -t v1.0.0
./docker-build.sh -n my-app --no-cache --platform linux/amd64
docker-run.sh - 詳細な設定でコンテナを実行します:
./docker-run.sh -i my-app -t v1.0.0 -d
./docker-run.sh -p 8080:3000 --env-file .env.production
docker-push.sh - レジストリ(Docker Hub、ECR、GCR、ACR)にプッシュします:
./docker-push.sh -n my-app -t v1.0.0 --repo username/my-app
./docker-push.sh -r gcr.io/project --repo my-app --also-tag stable
docker-cleanup.sh - ディスク容量を解放します:
./docker-cleanup.sh --all --dry-run # Preview cleanup
./docker-cleanup.sh --containers --images # Clean specific resources
4. 設定ファイル
.dockerignore:不要なファイル(node_modules、.git、ログ)を除外しますnginx.conf:圧縮、キャッシュ、セキュリティヘッダーを備えた、本番環境向けの Nginx 設定
5. リファレンスドキュメント
docker-best-practices.md の内容:
- マルチステージビルドの解説
- イメージ最適化の手法(サイズを 50~85% 削減)
- セキュリティのベストプラクティス(root 以外のユーザー、脆弱性スキャン)
- パフォーマンスの最適化
- ヘルスチェックとログ記録
- トラブルシューティングガイド
container-orchestration.md の内容:
- Docker Compose(ローカル開発)
- Kubernetes(自動スケーリングに対応するエンタープライズ規模)
- Amazon ECS(AWS ネイティブのオーケストレーション)
- Google Cloud Run(サーバーレスコンテナ)
- Azure Container Instances
- Digital Ocean App Platform
設定例、コマンド、自動スケーリングの設定、モニタリングを含みます。
ワークフローの判断ツリー
1. 環境はどれですか?
- 開発環境 →
Dockerfile.development(ホットリロード、すべての依存関係) - 本番環境 →
Dockerfile.production(最小構成、安全、最適化済み) - 静的エクスポート →
Dockerfile.nginx(最小のフットプリント)
2. コンテナは単一ですか、複数ですか?
- 単一 → Dockerfile のみを生成
- 複数 →
docker-compose.ymlを生成(アプリ+データベース、マイクロサービス)
3. 使用するレジストリはどれですか?
- Docker Hub →
docker.io/username/image - AWS ECR →
123456789012.dkr.ecr.region.amazonaws.com/image - Google GCR →
gcr.io/project-id/image - Azure ACR →
registry.azurecr.io/image
4. デプロイ先のプラットフォームはどれですか?
- Kubernetes →
references/container-orchestration.mdの K8s セクションを参照 - ECS → ECS タスク定義の例を参照
- Cloud Run → デプロイコマンドを参照
- Docker Compose → 提供されている compose ファイルを使用
5. 最適化が必要ですか?
- イメージサイズ → マルチステージビルド、Alpine ベース
- ビルド速度 → レイヤーキャッシュ、BuildKit
- セキュリティ → root 以外のユーザー、脆弱性スキャン
- パフォーマンス → リソース制限、ヘルスチェック
使用例
例 1:Next.js アプリを本番環境向けにコンテナ化する
ユーザー:「Next.js アプリを本番環境向けにコンテナ化してください」
手順:
assets/Dockerfile.productionをプロジェクトのルートにDockerfileとしてコピーしますassets/.dockerignoreをプロジェクトのルートにコピーします- ビルドします:
./docker-build.sh -e prod -n my-app -t v1.0.0 - テストします:
./docker-run.sh -i my-app -t v1.0.0 -p 3000:3000 -d - プッシュします:
./docker-push.sh -n my-app -t v1.0.0 --repo username/my-app
例 2:Docker Compose を使用した開発
ユーザー:「ローカル開発用に Docker Compose を設定してください」
手順:
assets/Dockerfile.developmentとassets/docker-compose.ymlをプロジェクトにコピーします- docker-compose.yml 内のサービスをカスタマイズします
- 起動します:
docker-compose up -d - ログを確認します:
docker-compose logs -f app-dev
例 3:Kubernetes へのデプロイ
ユーザー:「コンテナ化したアプリを Kubernetes にデプロイしてください」
手順:
- イメージをビルドしてレジストリにプッシュします
references/container-orchestration.mdの Kubernetes セクションを確認します- K8s マニフェスト(deployment、service、ingress)を作成します
- 適用します:
kubectl apply -f deployment.yaml - 確認します:
kubectl get pods && kubectl logs -f deployment/app
例 4:AWS ECS へのデプロイ
ユーザー:「AWS ECS Fargate にデプロイしてください」
手順:
- ビルドして ECR にプッシュします
references/container-orchestration.mdの ECS セクションを確認します- タスク定義の JSON を作成します
- 登録します:
aws ecs register-task-definition --cli-input-json file://task-def.json - サービスを作成します:
aws ecs create-service --cluster my-cluster --service-name app --desired-count 3
ベストプラクティス
セキュリティ
✅ 本番環境ではマルチステージビルドを使用します
✅ root 以外のユーザーとして実行します
✅ 固定のイメージタグを使用します(latest は使用しません)
✅ 脆弱性をスキャンします
✅ シークレットをハードコードしないでください
✅ ヘルスチェックを実装します
パフォーマンス
✅ レイヤーキャッシュの順序を最適化します ✅ Alpine イメージを使用します(約 85%小型化できます) ✅ 並列ビルドのために BuildKit を有効にします ✅ リソース制限を設定します ✅ 圧縮を使用します
保守性
✅ 複雑な手順にはコメントを追加します ✅ 柔軟性を高めるためにビルド引数を使用します ✅ Dockerfile の重複を避けます ✅ すべての設定をバージョン管理します ✅ 環境変数を文書化します
トラブルシューティング
イメージのサイズが大きすぎます(>500MB) → マルチステージビルド、Alpine ベース、包括的な .dockerignore を使用します
ビルドが遅い → レイヤーキャッシュを最適化し、BuildKit を使用して、依存関係を確認します
コンテナがすぐに終了します
→ ログを確認します:docker logs container-name
→ CMD/ENTRYPOINT を確認し、ポートの競合を確認します
変更が反映されません → キャッシュを使わずに再ビルドし、.dockerignore を確認して、ボリュームマウントを確認します
クイックリファレンス
# Build
./docker-build.sh -e prod -t latest
# Run
./docker-run.sh -i app -t latest -d
# Logs
docker logs -f app
# Execute
docker exec -it app sh
# Cleanup
./docker-cleanup.sh --all --dry-run # Preview
./docker-cleanup.sh --all # Execute
CI/CD との統合
GitHub Actions
- run: |
chmod +x docker-build.sh docker-push.sh
./docker-build.sh -e prod -t ${{ github.sha }}
./docker-push.sh -n app -t ${{ github.sha }} --repo username/app
GitLab CI
build:
script:
- chmod +x docker-build.sh
- ./docker-build.sh -e prod -t $CI_COMMIT_SHA
リソース
スクリプト(scripts/)
包括的な機能を備えた、本番環境ですぐに使える bash スクリプト:
docker-build.sh- イメージをビルドします(400 行以上、色付き出力)docker-run.sh- コンテナを実行します(400 行以上、競合を自動解決)docker-push.sh- レジストリにプッシュします(複数レジストリに対応)docker-cleanup.sh- リソースをクリーンアップします(ドライランモード、選択的なクリーンアップ)
リファレンス(references/)
必要に応じて読み込める詳細なドキュメント:
docker-best-practices.md- Docker のベストプラクティスの包括的なガイド(約 500 行)container-orchestration.md- 6 つ以上のプラットフォーム向けデプロイガイド(約 600 行)
アセット(assets/)
すぐに使えるテンプレート:
Dockerfile.production- マルチステージの本番環境用 DockerfileDockerfile.development- 開発用 DockerfileDockerfile.nginx- Nginx を使用した静的エクスポートdocker-compose.yml- マルチコンテナのオーケストレーション.dockerignore- 最適化された除外ルールnginx.conf- 本番環境用 Nginx 設定