fix(staging): use stable :dev tag for containers to enable Watchtower auto-update #2121
Reference in New Issue
Block a user
Delete Branch "fix/watchtower-stable-tag"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
Watchtower 无法自动更新 staging 容器,因为容器使用 commit SHA tag(如
7fd9c0cf...)启动。Watchtower 只能检测同一个 tag 的 digest 变化,commit SHA tag 每次构建都不同,所以 Watchtower 永远发现不了更新。
修复
ci_staging_deploy.sh中,pull 完 commit SHA 镜像后,docker tag为:dev:devtag(API/Web/Worker 统一)--rm模式,不需要 Watchtower 监控)效果
:devtag 的 digest 变化:devtag 指向新镜像,Watchtower 自动拉取并重启容器关于 Retag skipped
Retag skipped步骤被跳过是正常行为——它只在 Build 被跳过时才运行(frontend-only/backend-only变更)。当 Build 实际执行时,Retag 不需要运行,因为 Build 已经推送了所有需要的 tag(包括
:dev)。真正的问题是部署脚本用 commit SHA tag 启动容器,而不是
:devtag。关于 Docker ACR 凭证
CI 部署脚本中已包含
retry_docker_login函数,每次部署都会自动登录 ACR。服务器迁移后需要确保
/root/.docker/config.json中有有效的 ACR 凭证。本次已修复 Watchtower 容器的 config.json 挂载。
🚀 预览环境已部署
🗑️ 预览环境已清理
PR #2121 已关闭或合并,对应的预览环境已被清理。