升级
生产环境升级使用托管升级器:备份数据、指定目标版本、校验并同步发布文件、执行迁移、检查全部服务。不要重新初始化部署,也不要删除 Docker 数据卷。
1. 升级前备份
升级前先按 备份 & 恢复 完成一次停机全量备份。
2. 执行标准升级
本地 scripts/upgrade.sh 已支持 --version 时,在现有 asp-compose/ 部署目录执行:
./scripts/upgrade.sh --version <version><version> 使用目标 GitHub Release 的版本号,不包含 v 前缀。
升级器会自动把 .env 中前后端镜像的标签改为目标版本,同时保留现有镜像仓库地址。使用 digest 固定镜像或无法安全解析镜像地址时,脚本会停止并要求手动处理。
3. 旧部署首次迁移
先用不会执行升级的文本检查确认本地脚本是否支持托管升级:
grep -q -- '--version' ./scripts/upgrade.sh如果命令没有匹配结果,从目标 Release 下载独立升级脚本和校验文件:
version="<version>"
base_url="https://github.com/FunnyWolf/agentic-soc-platform/releases/download/v${version}"
curl -fL -O "${base_url}/asp-upgrade-${version}.sh"
curl -fL -O "${base_url}/asp-upgrade-${version}.sh.sha256"
sha256sum -c "asp-upgrade-${version}.sh.sha256" &&
chmod +x "asp-upgrade-${version}.sh" &&
./asp-upgrade-${version}.sh --version "${version}" &&
rm -f "asp-upgrade-${version}.sh" "asp-upgrade-${version}.sh.sha256"这一步只需要执行一次。升级成功后,本地 scripts/upgrade.sh 已更新,后续版本使用第 2 步即可。
只有附带独立升级脚本和 SHA-256 文件的 Release 才支持此方式。较早版本仍按对应发布说明中的一次性升级要求处理。
4. 升级器会更新什么
升级器下载目标 Release 的 Compose 发布包和 .sha256,校验通过后备份并更新以下官方管理文件:
compose.yamlscripts/.env.exampleREADME.mdREADME.zh.md
以下部署状态和用户内容不会被覆盖:
.envcompose.override.yamlcustom/certs/logs/- Docker named volumes
升级器随后校验 Compose 配置、拉取镜像、执行数据库迁移、启动服务,并运行 doctor.sh 检查全部官方常驻服务。
5. 自定义 Compose 配置
init.sh 和托管升级器会在文件不存在时创建带说明注释和 services: {} 空映射的 compose.override.yaml。该文件专门供用户维护,升级器永不覆盖。
密码、端口、镜像等已有配置优先写入 .env。只有需要增加 volume、环境变量、command 或其他服务级覆盖时,才编辑 compose.override.yaml:
services:
asp-web:
environment:
EXAMPLE_SETTING: value不要直接修改官方 compose.yaml;下一次托管升级会用目标 Release 中的版本替换它。
6. 失败与恢复
升级前的官方文件和 .env 会保存在:
backups/upgrade-<version>-<timestamp>-<pid>/- 下载、SHA-256 校验、文件更新、Compose 配置校验或镜像拉取失败时,脚本会在数据库迁移前自动恢复旧文件。
- 数据库迁移开始后不自动降级,因为旧镜像可能不兼容新数据库结构。迁移、启动或健康检查失败时,脚本会保留新版文件和备份路径并停止。
迁移开始后的失败应先查看命令输出和服务日志,再依据目标版本发布说明处理,不要直接恢复旧镜像。
7. 升级后检查
升级器会自动运行检查,也可以再次手动执行:
docker compose ps
./scripts/doctor.sh如果服务异常,查看对应日志:
docker compose logs --tail=100 asp-web
docker compose logs --tail=100 asp-worker-dashboard-cache生产环境应继续使用同一个 asp-compose/ 目录。默认 Compose project name 来自目录名,修改目录名可能导致 Docker named volume 名称变化,从而看不到原有数据。