马小龙 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
..
.env.rehearsal.example 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
README.md 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
backup.sh 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
install_offline.sh 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
package_offline.sh 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
preflight.sh 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
restore.sh 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
rollback.sh 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás
wp13-common.sh 3f49a517a6 feat: add offline deployment and recovery workflow 3 semanas atrás

README.md

WP13 Compose 离线交付、备份与恢复

本目录提供首期示范环境的可执行交付链。它以 deploy/docker/docker-compose.yml 为唯一 Compose 定义,不建立第二套人工维护的 服务清单。

1. 联网构建机生成离线包

先同步发布副本并构建默认服务镜像:

bash deployment/sync_release.sh
docker compose -f deploy/docker/docker-compose.yml build backend runner frontend
bash deployment/compose/package_offline.sh --version <发布版本>

产物位于 dist/dataops-platform-offline-<发布版本>.tar.gz,包含默认 profile 所需镜像、Compose 配置、数据库迁移、安装脚本、版本清单和全文件 SHA-256。 可选的 MCP、LightRAG shadow profile 不属于示范版默认启动范围,应另行生成并验收 扩展镜像包。

2. 离线主机安装或升级

tar -xzf dataops-platform-offline-<发布版本>.tar.gz
cd dataops-platform-offline-<发布版本>
cp deploy/docker/.env.example deploy/docker/.env.local
# 通过企业批准的密钥渠道填写 .env.local,不在终端或工单中粘贴密钥。
bash operations/install_offline.sh \
  --bundle-root "$PWD" \
  --env-file "$PWD/deploy/docker/.env.local" \
  --project-name dataops-test

安装顺序固定为:校验全部文件、载入镜像、解析 Compose、检查镜像、启动 --no-build、等待健康、核对 Alembic current/head。升级不调用数据库 downgrade。

3. 一致性备份

备份会先导出 PostgreSQL 逻辑备份,再在明确的维护窗口内停止 Compose 项目, 对所有带该项目标签的卷做一致性快照,最后自动重启原项目:

bash deployment/compose/backup.sh \
  --compose-file deploy/docker/docker-compose.yml \
  --project-name dataops-test \
  --output-dir /safe/dataops-backups/<备份编号> \
  --confirm-maintenance-window

输出包括 postgres-all.sqlalembic-current.txt、所有卷归档、 backup-manifest.txtchecksums.sha256。备份目录不得放入 Git。生产环境还需 复制到独立故障域、加密并按企业保留策略管理。

4. 恢复演练

默认禁止原项目原位恢复。演练必须使用新的项目名、独立端口和精确确认:

cp deployment/compose/.env.rehearsal.example /tmp/wp13-rehearsal.env
bash deployment/compose/restore.sh \
  --backup-dir /safe/dataops-backups/<备份编号> \
  --compose-file deploy/docker/docker-compose.yml \
  --env-file /tmp/wp13-rehearsal.env \
  --project-name dataops-wp13-restore \
  --confirm-project dataops-wp13-restore \
  --start

恢复先验签,再确认目标不存在,随后创建目标项目专属卷并解包。任何确认不一致、 校验失败、目标已存在或与源项目同名的情况都会在写入前失败关闭。

5. 版本回滚

回滚需要同时指定“上一版离线包”和“升级前备份”,并恢复到新的候选项目。验证完成 后由变更负责人执行流量切换:

bash <上一版目录>/operations/rollback.sh \
  --release-root <上一版目录> \
  --backup-dir <升级前备份> \
  --env-file /tmp/wp13-rehearsal.env \
  --project-name dataops-rollback-candidate \
  --confirm-project dataops-rollback-candidate \
  --start

本流程不会执行 Alembic downgrade。正式生产切换、旧项目下线和备份删除均需要企业 变更审批,不由脚本自动执行。