diff --git a/README.md b/README.md index 3b3310d6..ebea5f15 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## 生产部署 - 生产入口:`docker-compose.yaml` -- 初始化方式:`docker compose run --rm backend-init` +- 初始化方式:`docker compose run --rm --build backend-init` - 启动方式:`docker compose up -d --build` - 运行拓扑:`nginx`、`backend`、`db` - 对外入口:`nginx` 提供前端静态资源,并同域反代后端 API diff --git a/docs/guides/branch-environment-installation.md b/docs/guides/branch-environment-installation.md index 09a2489c..ef69b6f4 100644 --- a/docs/guides/branch-environment-installation.md +++ b/docs/guides/branch-environment-installation.md @@ -149,7 +149,7 @@ bash scripts/install.sh release --base-url https://ctms.example.com 1. 检查 docker、docker compose、openssl、curl。 2. 检查 .env;已存在则保留不改,不存在则新建。 3. 新建 main/release 的 .env 时自动生成 JWT 和 RSA 私钥。 -4. main/release 先执行 backend-init。 +4. main/release 先构建并执行 backend-init,确保数据库迁移使用当前代码中的 Alembic revision。 5. 启动容器;默认执行 docker compose up -d --build,--skip-build 时执行 docker compose up -d。 6. 执行 docker compose run --rm backend python -m alembic upgrade head。 7. 检查容器状态、后端环境、/health、/api/v1/auth/login-key。 @@ -333,7 +333,7 @@ LOGIN_RSA_PRIVATE_KEY: '-----BEGIN PRIVATE KEY-----...' ### 5. 初始化数据库 ```bash -docker compose run --rm backend-init +docker compose run --rm --build backend-init ``` ### 6. 构建镜像并启动 @@ -521,7 +521,7 @@ LOGIN_RSA_PRIVATE_KEY: '-----BEGIN PRIVATE KEY-----...' ### 6. 初始化数据库 ```bash -docker compose run --rm backend-init +docker compose run --rm --build backend-init ``` 确认命令成功后再启动服务。 diff --git a/docs/guides/release-checklist.md b/docs/guides/release-checklist.md index 6e024d15..49162d89 100644 --- a/docs/guides/release-checklist.md +++ b/docs/guides/release-checklist.md @@ -5,14 +5,14 @@ 最后更新: `2026-03-30` ## 1. 构建与迁移 -- [ ] `docker compose run --rm backend-init` +- [ ] `docker compose run --rm --build backend-init` - [ ] `cd backend && python3 -m compileall app scripts` - [ ] `cd frontend && npm run build` ## 1.1 容器构建校验 - [ ] `docker compose config` 渲染成功 - [ ] `docker compose build backend frontend` 成功 -- [ ] `docker compose run --rm backend-init` 成功 +- [ ] `docker compose run --rm --build backend-init` 成功 ## 2. 接口与权限回归 - [ ] ADMIN 账号可 `GET/PUT/PUBLISH/IMPORT-EXCEL/EXPORT-EXCEL` diff --git a/scripts/install.sh b/scripts/install.sh index 0e2aedb5..28904ec4 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -325,7 +325,13 @@ run_compose_config() { run_backend_init() { step "初始化数据库与管理员账号" - ctms_run_quiet "运行 backend-init 容器" -- compose_cmd run --rm backend-init + if [[ "$SKIP_BUILD" -eq 1 ]]; then + ctms_run_quiet "运行 backend-init 容器" -- compose_cmd run --rm backend-init + else + # backend-init 是 profile 服务,不会被后续 `compose up --build` 自动构建。 + # 更新部署时必须先基于当前代码重建,否则会复用旧镜像并缺失新 Alembic revision。 + CTMS_LIVE_OUTPUT=1 ctms_run_quiet "构建并运行 backend-init 容器" -- compose_cmd run --rm --build backend-init + fi } run_build_and_start() {