fix(deploy): 修复数据库初始化复用旧镜像
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
## 生产部署
|
## 生产部署
|
||||||
- 生产入口:`docker-compose.yaml`
|
- 生产入口:`docker-compose.yaml`
|
||||||
- 初始化方式:`docker compose run --rm backend-init`
|
- 初始化方式:`docker compose run --rm --build backend-init`
|
||||||
- 启动方式:`docker compose up -d --build`
|
- 启动方式:`docker compose up -d --build`
|
||||||
- 运行拓扑:`nginx`、`backend`、`db`
|
- 运行拓扑:`nginx`、`backend`、`db`
|
||||||
- 对外入口:`nginx` 提供前端静态资源,并同域反代后端 API
|
- 对外入口:`nginx` 提供前端静态资源,并同域反代后端 API
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ bash scripts/install.sh release --base-url https://ctms.example.com
|
|||||||
1. 检查 docker、docker compose、openssl、curl。
|
1. 检查 docker、docker compose、openssl、curl。
|
||||||
2. 检查 .env;已存在则保留不改,不存在则新建。
|
2. 检查 .env;已存在则保留不改,不存在则新建。
|
||||||
3. 新建 main/release 的 .env 时自动生成 JWT 和 RSA 私钥。
|
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。
|
5. 启动容器;默认执行 docker compose up -d --build,--skip-build 时执行 docker compose up -d。
|
||||||
6. 执行 docker compose run --rm backend python -m alembic upgrade head。
|
6. 执行 docker compose run --rm backend python -m alembic upgrade head。
|
||||||
7. 检查容器状态、后端环境、/health、/api/v1/auth/login-key。
|
7. 检查容器状态、后端环境、/health、/api/v1/auth/login-key。
|
||||||
@@ -333,7 +333,7 @@ LOGIN_RSA_PRIVATE_KEY: '-----BEGIN PRIVATE KEY-----...'
|
|||||||
### 5. 初始化数据库
|
### 5. 初始化数据库
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose run --rm backend-init
|
docker compose run --rm --build backend-init
|
||||||
```
|
```
|
||||||
|
|
||||||
### 6. 构建镜像并启动
|
### 6. 构建镜像并启动
|
||||||
@@ -521,7 +521,7 @@ LOGIN_RSA_PRIVATE_KEY: '-----BEGIN PRIVATE KEY-----...'
|
|||||||
### 6. 初始化数据库
|
### 6. 初始化数据库
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose run --rm backend-init
|
docker compose run --rm --build backend-init
|
||||||
```
|
```
|
||||||
|
|
||||||
确认命令成功后再启动服务。
|
确认命令成功后再启动服务。
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
最后更新: `2026-03-30`
|
最后更新: `2026-03-30`
|
||||||
|
|
||||||
## 1. 构建与迁移
|
## 1. 构建与迁移
|
||||||
- [ ] `docker compose run --rm backend-init`
|
- [ ] `docker compose run --rm --build backend-init`
|
||||||
- [ ] `cd backend && python3 -m compileall app scripts`
|
- [ ] `cd backend && python3 -m compileall app scripts`
|
||||||
- [ ] `cd frontend && npm run build`
|
- [ ] `cd frontend && npm run build`
|
||||||
|
|
||||||
## 1.1 容器构建校验
|
## 1.1 容器构建校验
|
||||||
- [ ] `docker compose config` 渲染成功
|
- [ ] `docker compose config` 渲染成功
|
||||||
- [ ] `docker compose build backend frontend` 成功
|
- [ ] `docker compose build backend frontend` 成功
|
||||||
- [ ] `docker compose run --rm backend-init` 成功
|
- [ ] `docker compose run --rm --build backend-init` 成功
|
||||||
|
|
||||||
## 2. 接口与权限回归
|
## 2. 接口与权限回归
|
||||||
- [ ] ADMIN 账号可 `GET/PUT/PUBLISH/IMPORT-EXCEL/EXPORT-EXCEL`
|
- [ ] ADMIN 账号可 `GET/PUT/PUBLISH/IMPORT-EXCEL/EXPORT-EXCEL`
|
||||||
|
|||||||
+7
-1
@@ -325,7 +325,13 @@ run_compose_config() {
|
|||||||
|
|
||||||
run_backend_init() {
|
run_backend_init() {
|
||||||
step "初始化数据库与管理员账号"
|
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() {
|
run_build_and_start() {
|
||||||
|
|||||||
Reference in New Issue
Block a user