feat: deploy/deploy.sh 自动化部署体系 — 双tag镜像/快照/迁移门控/回滚,退役根deploy.sh
- compose 四服务补 image: ${BACKEND_TAG}/${FRONTEND_TAG} 插值(换 tag 回滚前提)
- deploy/deploy.sh:工作区校验→PREV_SHA→pull→predeploy 快照(-Fc)→destructive 判定→
build+双tag→.pending-deploy→迁移退出码门控→up -d --no-deps→健康轮询→versions.log→
镜像治理;支持 --dry-run / flock / 基础设施健康门 / 多head预检
- deploy/rollback.sh:双入口(手动读 versions.log 跳 ROLLBACK 行 / --auto 读
.pending-deploy);destructive 走 pg_restore --clean;双 tag 原子切换
- deploy/hotfix.sh:紧急单文件 cp + 强制收口提醒
- .gitignore 补 .pending-deploy/versions.log(运行时状态)
- 退役根 deploy.sh + deploy.env.example(SSH 旧模型,被 deploy/deploy.sh 取代)
This commit is contained in:
+3
-2
@@ -1,11 +1,12 @@
|
||||
# 部署运维方案:生产工程化(一期 + 二期)
|
||||
|
||||
> **日期:** 2026-08-08(v17 更新于 2026-08-10)
|
||||
> **版本:** v17.0(当前) **状态:** 一期 3 项已执行(磁盘/备份/TLS)+ 构建加速(Dockerfile 卫生)+ gitea TLS,其余待执行
|
||||
> **日期:** 2026-08-08(v18 更新于 2026-08-10)
|
||||
> **版本:** v18.0(当前) **状态:** 一期 §2 deploy/deploy.sh 体系已实现(v18),见版本记录
|
||||
> **关联:** [docs/10-生产部署文档.md](10-生产部署文档.md)、[docs/11-20260717部署事故分析.md](11-20260717部署事故分析.md)、[docs/12-部署实际操作记录.md](12-部署实际操作记录.md)、[docs/17-生产数据迁移.md](17-生产数据迁移.md)(24 迁移专项,2026-08-09)
|
||||
>
|
||||
> **版本记录:**
|
||||
> - **v17** — 2026-08-10:§7 补「服务器本地改动必须回流 gitea」环节(TLS/Caddy 改动从未提交,git-ify checkout 会丢 HTTPS——回流后服务器 git pull 才安全,与 §2 闭环)
|
||||
> - **v18** — 2026-08-10:**§2 deploy/deploy.sh 体系落地(首次实现)**——① compose 四服务(backend/worker/migrate/frontend)补 `image:` + `${BACKEND_TAG}`/`${FRONTEND_TAG}` 插值(M2/M4 + 换 tag 回滚前提,build 前 export tag 则 build 产物直接打 `<sha>` 标签);② 新建 `deploy/deploy.sh`(工作区校验 → PREV_SHA(pull 前,F)→ git pull → before head → predeploy 快照 `-Fc` 全量(H)→ destructive 判定(P12 + `destructive_*`/`# DESTRUCTIVE` 双保险)→ build + 双 tag → `.pending-deploy`(N1,落部署目录)→ 多 head 预检(P15)→ 迁移 `run --no-deps --rm` 退出码门控(K)→ after head → `up -d --no-deps backend worker frontend` → 健康轮询(V6)→ versions.log + 删标记 → 镜像治理 count 制;支持 `--dry-run`;顶部 source .env(G)+ flock + 遗留标记检测(I)+ 基础设施健康门(P14/N5));③ 新建 `deploy/rollback.sh`(双入口:手动读 versions.log 跳 ROLLBACK 行(E5)/ `--auto` 读本次 `.pending-deploy`(N1 洞);destructive=是 走 `pg_restore --clean --if-exists`(L);双 tag 原子切换(E2);回滚追 ROLLBACK 行);④ 新建 `deploy/hotfix.sh`(cp + 收口提醒);⑤ .gitignore 补 `.pending-deploy`/`versions.log`;⑥ 退役根 `deploy.sh` + `deploy.env.example`(SSH 旧模型);⑦ docs/deployment-guide.md 同步。复用 migrate_prod.sh 的 `get_db_rev()` 模式(`grep -oE '[0-9a-f]{12}' | tail -1` 防容器 ID 误抓)。脚本用法见 §2 下方或 deploy/*.sh 头部
|
||||
> - **v16** — 2026-08-10:§3 补批量迁移执行序 + destructive ordering(批次 1 日期收窄须与发代码同窗口);§7 补 gitea TLS 落地;§6 补构建加速落地(腾讯 pip/npm 源 + BuildKit,详见记忆 docker_build_optimization)
|
||||
> - **v1** — 初稿(生产工程化框架,一期 + 二期)
|
||||
> - **v2** — 吸收三档补强:破坏性迁移硬判定、backup.sh 上机查清、扩对盘、compose 范围澄清、挂卷后 logrotate、pre-deploy 快照留存、registry token 轮换、alembic head 采集、增强级
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
```bash
|
||||
# 1. 服务器上 clone 项目
|
||||
ssh root@your-server.com
|
||||
git clone https://gitee.com/your-org/scilit-oncology.git /root/scilit-oncology
|
||||
cd /root/scilit-oncology
|
||||
git clone https://gitee.com/your-org/scilit-oncology.git /root/scilit
|
||||
cd /root/scilit
|
||||
|
||||
# 2. 配置环境变量
|
||||
cp .env.example .env
|
||||
@@ -27,15 +27,26 @@ curl http://localhost:8000/health
|
||||
curl http://localhost:80
|
||||
```
|
||||
|
||||
## 使用 deploy.sh 自动化部署
|
||||
## 使用 deploy/deploy.sh 自动化部署(生产)
|
||||
|
||||
> 旧根目录 `deploy.sh`(SSH 直连模型)已废弃,替换为 `deploy/` 脚本体系。
|
||||
> 完整设计见 [16-部署运维方案.md](16-部署运维方案.md) §2。
|
||||
|
||||
```bash
|
||||
# 1. 配置服务器连接信息
|
||||
cp deploy.env.example deploy.env
|
||||
# 编辑 deploy.env,填入 SCILIT_HOST / SCILIT_USER / SCILIT_PATH
|
||||
# 在服务器 /root/scilit(git 仓库 + .env 所在目录)执行
|
||||
|
||||
# 2. 推送代码并部署
|
||||
source deploy.env && ./deploy.sh
|
||||
# 0. 前置:基础设施已在跑
|
||||
docker compose -f docker-compose.prod.yml ps
|
||||
|
||||
# 1. 预览将执行的命令(不执行任何变更)
|
||||
bash deploy/deploy.sh --dry-run
|
||||
|
||||
# 2. 正式部署(自动:工作区校验 → git pull → predeploy 快照 →
|
||||
# 迁移 → 容器切换 → 健康轮询 → versions.log)
|
||||
bash deploy/deploy.sh
|
||||
|
||||
# 3. 回滚到上一成功版本
|
||||
bash deploy/rollback.sh
|
||||
```
|
||||
|
||||
## PostgreSQL 备份与恢复
|
||||
|
||||
Reference in New Issue
Block a user