feat: Worker 进程拆分(F20)
- 新增 worker 进程入口(npm run worker)只跑作业不监听端口 - trialrun compose 增加 worker profile(server 可 JOBS_ENABLED=false) - 更新 runbook/.env.example/README 说明与 v3 CSV 状态推进
这个提交包含在:
@@ -54,9 +54,14 @@ DELEGATION_REVOKE_CRON="0 * * * *"
|
||||
|
||||
# ===== 作业系统(pg-boss,可回滚到 cron)=====
|
||||
JOB_DRIVER="pgboss" # cron|pgboss
|
||||
JOBS_ENABLED="true" # false 时整体关闭作业(排障/回滚)
|
||||
JOBS_ENABLED="true" # false 时整体关闭作业(排障/回滚/或启用 worker 拆分)
|
||||
PG_BOSS_SCHEMA="pgboss" # pg-boss 在 PG 内的 schema
|
||||
|
||||
# ===== Worker 拆分(可选,F20)=====
|
||||
# 如需启用“API 进程 + Worker 进程”:
|
||||
# 1) 设置 JOBS_ENABLED="false"(server 不跑作业)
|
||||
# 2) 启动 compose 时加:--profile worker(会启动 worker 容器,worker 内强制 JOBS_ENABLED=true)
|
||||
|
||||
# ===== 试运行引导管理员(E20)=====
|
||||
TRIALRUN_ADMIN_EMAIL="[email protected]"
|
||||
TRIALRUN_ADMIN_PHONE="13800000000"
|
||||
|
||||
@@ -64,6 +64,44 @@ services:
|
||||
volumes:
|
||||
- ./data/storage:${STORAGE_DIR}
|
||||
|
||||
worker:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/trialrun/Dockerfile
|
||||
container_name: hyb-oa-trialrun-worker
|
||||
restart: unless-stopped
|
||||
profiles: ["worker"]
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
command: ["npm", "run", "worker"]
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
APP_ORIGIN: ${APP_ORIGIN}
|
||||
JWT_SECRET: ${JWT_SECRET}
|
||||
DATABASE_URL: ${DATABASE_URL}
|
||||
STORAGE_DIR: ${STORAGE_DIR}
|
||||
SERVE_CLIENT_DIST: "false"
|
||||
CLIENT_DIST_DIR: ${CLIENT_DIST_DIR}
|
||||
|
||||
OCR_PROVIDER: ${OCR_PROVIDER}
|
||||
OCR_MAX_ATTEMPTS: ${OCR_MAX_ATTEMPTS}
|
||||
OCR_POLL_CRON: ${OCR_POLL_CRON}
|
||||
OCR_BATCH_SIZE: ${OCR_BATCH_SIZE}
|
||||
OCR_LOCK_TTL_SECONDS: ${OCR_LOCK_TTL_SECONDS}
|
||||
OCR_TIMEOUT_MS: ${OCR_TIMEOUT_MS}
|
||||
TENCENT_SECRET_ID: ${TENCENT_SECRET_ID}
|
||||
TENCENT_SECRET_KEY: ${TENCENT_SECRET_KEY}
|
||||
TENCENT_OCR_REGION: ${TENCENT_OCR_REGION}
|
||||
|
||||
DELEGATION_REVOKE_CRON: ${DELEGATION_REVOKE_CRON}
|
||||
|
||||
JOB_DRIVER: ${JOB_DRIVER}
|
||||
JOBS_ENABLED: "true"
|
||||
PG_BOSS_SCHEMA: ${PG_BOSS_SCHEMA}
|
||||
volumes:
|
||||
- ./data/storage:${STORAGE_DIR}
|
||||
|
||||
init:
|
||||
build:
|
||||
context: ../..
|
||||
|
||||
@@ -21,6 +21,7 @@ cp deploy/trialrun/.env.example deploy/trialrun/.env
|
||||
作业系统建议:
|
||||
- 试运行默认 `JOB_DRIVER=pgboss`(基于 Postgres 的队列调度,单机/多进程语义更稳)
|
||||
- 如需快速回滚作业调度:将 `JOB_DRIVER` 改回 `cron`
|
||||
- 可选 Worker 拆分(F20):将 `JOBS_ENABLED=false` 并启用 `--profile worker`(worker 进程会强制跑作业)
|
||||
|
||||
### 1.2 启动数据库与服务
|
||||
```bash
|
||||
@@ -29,6 +30,14 @@ docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/
|
||||
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server
|
||||
```
|
||||
|
||||
可选:启用 Worker 进程(推荐在试运行/多进程模式使用):
|
||||
```bash
|
||||
cd /path/to/hyb-oa
|
||||
# 1) 在 deploy/trialrun/.env 中设置:JOBS_ENABLED="false"
|
||||
# 2) 启用 worker profile(会额外启动 worker 容器)
|
||||
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env --profile worker up -d --build server worker
|
||||
```
|
||||
|
||||
### 1.3 初始化(迁移 + 配置 seed + 试运行管理员)
|
||||
```bash
|
||||
cd /path/to/hyb-oa
|
||||
|
||||
在新工单中引用
屏蔽一个用户