62 lines
1.9 KiB
Markdown
62 lines
1.9 KiB
Markdown
# 巡樓部署(Docker 一鍵啟動)
|
||
|
||
整套系統用單一 `docker compose` 拉起,對外只開前端 `:80`。
|
||
|
||
```
|
||
瀏覽器 → web(nginx :80)
|
||
├─ 前端靜態檔(vite build)
|
||
└─ /api 反代 → gateway:8890
|
||
gateway / worker(Go)─┐
|
||
node-worker(playwright)┤→ Mongo / Redis(同網路,不對外)
|
||
```
|
||
|
||
| 容器 | 角色 |
|
||
|------|------|
|
||
| `mongo` / `redis` | 資料層(只綁 `127.0.0.1`,volume 持久化) |
|
||
| `init` | run-once:建索引 / 權限 / 第一個 admin(冪等,跑完即退) |
|
||
| `gateway` | API + scheduler + reaper(:8890,僅內網) |
|
||
| `worker` | Go job worker |
|
||
| `node-worker` | playwright style-8d |
|
||
| `web` | nginx,serve 前端 + 反代 `/api` |
|
||
|
||
## 一鍵啟動
|
||
|
||
```bash
|
||
cp deploy/.env.example deploy/.env # 填密碼與 secret
|
||
make up # = docker compose up -d --build
|
||
```
|
||
|
||
啟動順序由 `depends_on` + healthcheck 保證:Mongo/Redis 健康 → `init` 跑完 → `gateway`/`worker` 起來 → `gateway` 健康 → `node-worker`/`web` 起來。
|
||
|
||
## 常用指令
|
||
|
||
```bash
|
||
make ps # 狀態
|
||
make logs # 全部日誌
|
||
make logs-gateway # 只看 gateway
|
||
make down # 停(保留資料)
|
||
make down-clean # 停並清空 Mongo/Redis volume
|
||
make rebuild # 無快取重建並重啟
|
||
make init # 重跑一次 DB 初始化
|
||
```
|
||
|
||
## 健康檢查
|
||
|
||
```bash
|
||
curl http://localhost/api/v1/health
|
||
```
|
||
|
||
## 產生 secret
|
||
|
||
```bash
|
||
openssl rand -base64 48 # JWT access / refresh / worker secret
|
||
openssl rand -base64 32 # HAIXUN_SECRETS_KEY(機敏資料落地加密)
|
||
```
|
||
|
||
## 注意事項
|
||
|
||
- `deploy/.env` 內含 secret,不要 commit。
|
||
- `MONGO_ROOT_PASSWORD` 建議只用英數字;含 `@ : / $` 等字元時,compose 內的 `HAIXUN_MONGO_URI` 需自行 URL-encode。
|
||
- 全系統時間 UTC+0(容器 `TZ=UTC`)。
|
||
- 本機開發(不全容器化)見根目錄 `make dev`。
|