升级
本指南涵盖 Open ACE 的升级:准备与备份、升级步骤、数据库迁移失败处置与回滚。更换应用镜像不会触碰数据——所有状态都在命名卷(postgres-data、config-data、workspace-data、agent-state)中。
目录
升级前准备
-
备份数据库。 数据存放在
postgres-data命名卷中,用pg_dump备份(已不存在usage.db文件 ):docker compose exec postgres pg_dump -U ace ace > openace_backup_$(date +%Y%m%d).sql若在
.env中改过DB_USER/DB_NAME,请相应调整-U <DB_USER>和库名。定时备份策略见 DATABASE_BACKUP.md。 -
确认密钥。
.env中的SECRET_KEY、OPENACE_ENCRYPTION_KEY、DB_PASSWORD必须在升级中原样保留(见密钥兼容注意)。 -
确定目标版本。 Compose 默认跟踪
openace/open-ace:latest;可控升级建议在.env中固定版本标签:# 指定版本(写入 .env)echo "IMAGE_NAME=openace/open-ace:v1.2.0" >> .env
最低升级基线
最低支持升级起点为 baseline_2026_06_23。
- 若数据库已处于
baseline_2026_06_23或受支持迁移链上的任意更新 revision,scripts/check_min_revision.py会放行,容器启动时alembic upgrade head自动补齐缺失的迁移。 - 若数据库仍停留在基线之前的 revision(如历史 hash revision),
check_min_revision.py会直接报错并阻止容器启动,拒绝在不受支持的迁移路径上运行。 - 全新数据库(无
alembic_version表)在开发模式下自动放行;生产模式要求先显式完成迁移。
出现这类失败说明数据库已偏离受支持的迁移链:请先从已位于 baseline_2026_06_23 链上的健康备份恢复,再升级。不要对着过期 revision 反复重试。
升级步骤
Docker Compose(推荐)
cd /path/to/open-ace
# 1. 备份(见「升级前准备」)
# 2. 拉取新镜像
docker compose pull
# 3. 重建容器
docker compose up -d
# 4. 观察启动与自动迁移
docker compose logs -f open-ace
镜像更换后的首次启动,docker-entrypoint.sh 会自动完成:
- 等待 PostgreSQL 就绪
- 检查应用 schema 是否已存在
- 运行
scripts/check_min_revision.py校验当前 revision 在受支持的迁移链上(全新库自动放行) - 执行
alembic upgrade head - 对全新数据库创建默认管理员账号
手动执行校验与迁移:
docker compose exec open-ace sh -c 'python3 scripts/check_min_revision.py && alembic upgrade head'
带 scheduler profile 或多用户 overlay 时,用同样方式升级整个栈(多用户:docker compose -f docker-compose.yml -f docker-compose.multi-user.yml up -d)。
裸机(package / 源码安装)
# 先备份,然后:
git pull
# 运行数据库迁移
alembic upgrade head
# 重启服务
python3 scripts/manage.py stop
python3 scripts/manage.py start
# systemd 安装则:
sudo systemctl restart open-ace
package 方式安装可直接复用 install.sh:脚本会检测既有安装并提示升级,迁移前同样运行 check_min_revision.py,对基线之前的数据库直接拒绝。
离线服务器
在有网络的机器上导出新镜像并传输:
./scripts/install-central/docker-method/export-image.sh --build --compress
# 将 open-ace-images.tar.gz 拷贝到服务器后:
gunzip -c open-ace-images.tar.gz | docker load
docker compose up -d
scripts/install-central/docker-method/upgrade-remote.sh 可自动完成远程升级流程。