本番用Docker Compose作成

This commit is contained in:
CyberRex
2026-05-25 10:01:34 +09:00
parent 40e7953ee5
commit d4918762d2
12 changed files with 183 additions and 7 deletions

View File

@@ -29,6 +29,8 @@
```text
pnpm install
docker compose up -d postgres
docker compose up -d --build
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build
pnpm dev
pnpm monitor:once
pnpm monitor:worker
@@ -45,10 +47,29 @@ Frontend: http://127.0.0.1:5173/
API: http://127.0.0.1:3000
```
Docker Compose:
```text
本番相当: docker compose up -d --build
開発用: docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build
本番 URL: http://127.0.0.1:3000/
開発 URL: http://127.0.0.1:5173/
```
- `docker-compose.yml` は本番相当の標準 Compose として、PostgreSQL、Web/API アプリ、`monitor-worker` を起動する。
- `docker-compose.dev.yml` は開発用 override として、アプリを bind mount し `pnpm dev` で Vite と API を起動する。
- Docker CLI が Compose v2 サブコマンドに対応していない環境では、同じ引数で `docker-compose` を使う。
- Compose のアプリ公開ポートは `127.0.0.1` に限定し、外部 NIC へ公開しない。
- Compose の PostgreSQL はホストに公開せず、`app` / `monitor-worker` から内部ネットワーク経由でのみアクセスする。
- コンテナ内では `HOST=0.0.0.0` を使い、ホスト側への公開範囲は Compose の `ports` で制御する。
## ディレクトリ構成
```text
db/schema.sql
Dockerfile
docker-compose.yml
docker-compose.dev.yml
README.md
public/push-sw.js
src/client
@@ -79,6 +100,7 @@ tests/urlPolicy.test.js
主な項目:
- `NODE_ENV`
- `HOST`
- `PORT`
- `DATABASE_URL`
- `COOKIE_SECRET`
@@ -89,6 +111,8 @@ tests/urlPolicy.test.js
補足:
- `HOST` 未設定時は `127.0.0.1` で待ち受ける。Docker Compose ではコンテナ内到達性のため `0.0.0.0` を指定する。
- ホスト実行時の `DATABASE_URL` は通常 `localhost:5432`、Compose 内のサービスでは `postgres:5432` を使う。ただし Compose 起動中の PostgreSQL はホストに公開しない。
- `OPENSSL_PATH` 未設定時は `openssl` を使う。
- Windows では Git 付属の `openssl.exe` を自動検出する実装がある。
- VAPID private key が未設定の場合、Push 実送信は失敗として `delivery_result` に記録される。
@@ -121,6 +145,9 @@ DDL は `db/schema.sql` に保管している。
注意:
- `docker-compose.yml` は初回 DB 起動時に `db/schema.sql` を読み込む。既存 volume がある場合、schema の変更は自動再適用されない。
- `docker-compose.yml` はアプリ本体と監視 worker も起動するため、DB だけを起動したい場合は `docker compose up -d postgres` を使う。
- 開発用 Compose は `docker-compose.dev.yml` を重ねて使い、Vite の公開ポートも `127.0.0.1:5173` に限定する。
- Compose の PostgreSQL へホストから直接接続する前提の作業は行わない。DB 操作が必要な場合はコンテナ内実行や一時的な明示設定を検討する。
## 実装済み API
@@ -317,6 +344,7 @@ pnpm monitor:worker
- Webhook / Push の送信失敗は `delivery_result` に記録する。
- 監視ジョブの開始、終了、失敗は構造化ログで出力する。
- `pnpm monitor:worker` は 1 時間ごとに監視ジョブを実行する長時間起動プロセス。
- 本番相当の Docker Compose では `monitor-worker` サービスとして `pnpm monitor:worker` を常駐起動する。
注意:
@@ -363,6 +391,7 @@ pnpm monitor:worker
- UI の削除操作には確認ダイアログを追加する。
- 既存の左サイドメニューとレスポンシブ挙動を崩さない。
- フロントエンドの入力チェックを追加しても、サーバー側検証を必ず維持する。
- Docker Compose のアプリポートを変更する場合も、ホスト側 bind は `127.0.0.1` に限定する。
- 変更後は少なくとも以下を実行する。
```text