Newer
Older
PixelPaintWar / docs / 01_Env / ENV_05_Docker運用操作ガイド.txt
========================================================================
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 の手順で再デプロイする.