========================================================================
Docker 運用・操作ガイド (Docker Operations Guide)
========================================================================
1. 目的 (Objective)
------------------------------------------------------------------------
本ドキュメントは,Pixel Paint War プロジェクトにおける Docker の日常的な
操作コマンドと,トラブルシューティング手順をまとめたものである.
本プロジェクトでは「開発環境」と「本番環境」で異なる運用を行う.
2. 開発環境 (Development Environment)
------------------------------------------------------------------------
VS Code の Dev Containers 機能を使用する.
2-1.
基本操作
・起動: VS Code でプロジェクトを開き,「Reopen in Container」を実行する.
・停止: VS Code を閉じる(自動的に停止する).
・ターミナル: VS Code 内のターミナルを使用する.
2-2.
コンテナの再構築 (Rebuild)
依存関係の不整合や設定変更が反映されない場合に実行する.
1. コマンドパレット (F1) を開く.
2. 「Dev Containers: Rebuild Container」を選択する.
3. キャッシュを無視したい場合は「Rebuild Without Cache」を選択する.
3. 本番環境 (Production Environment)
------------------------------------------------------------------------
手動で Docker Compose コマンドを実行する.
※ 必ず WSL (Windows) または ホストOSのターミナルで実行すること.
3-1.
基本コマンド
■ 起動 (ビルド込み)
$ docker compose -f docker-compose.prod.yml up -d --build
■ 状態確認
$ docker compose -f docker-compose.prod.yml ps
■ ログ確認 (リアルタイム)
$ docker compose -f docker-compose.prod.yml logs -f
■ 停止
$ docker compose -f docker-compose.prod.yml down
3-2.
ポート仕様
・ホスト側ポート: 3001
・コンテナ内ポート: 3000
・接続確認URL: http://localhost:3001
※ 開発用コンテナ (Port 3000) との衝突を避けるため,3001番を使用する.
4. トラブルシューティング (Troubleshooting)
------------------------------------------------------------------------
4-1.
ビルドエラー・反映漏れへの対処
修正したコードが反映されない,または原因不明のエラーが出る場合,
キャッシュを使わずに強制的に再ビルドを行う.
$ docker compose -f docker-compose.prod.yml build --no-cache
$ docker compose -f docker-compose.prod.yml up -d --force-recreate
4-2.
モジュールが見つからない (MODULE_NOT_FOUND)
本番起動時に `ws` 等が見つからないエラーが出る場合,`Dockerfile` の
COPY記述を確認する.pnpm のシンボリックリンク構造に対応するため,
以下が記述されている必要がある.
COPY --from=builder /app/apps/server/node_modules ./apps/server/node_modules
4-3.
再起動ループ (Restarting)
`docker ps` でステータスが `Restarting` になる場合,サーバープロセスが
クラッシュまたは終了している.
1. ログを確認する:
$ docker compose -f docker-compose.prod.yml logs --tail=50
2. コード修正後,4-1 の手順で再デプロイする.