Azure容器应用:每个修订是否保存独立Docker镜像?生产安全做法咨询
问题解答
关于回滚是否需要独立源镜像
是的,你必须为每个修订创建独立的、不可变的镜像标签。目前你只用:latest标签,每次构建都会覆盖这个镜像,导致旧修订指向的其实是新构建的有问题的镜像——这就是激活旧修订仍失败的核心原因:旧修订的镜像引用已经被新的坏镜像替换,根本没用到原本正常的历史镜像。
生产环境最安全的实践
- 使用唯一不可变的镜像标签:用Git提交哈希(
git rev-parse --short HEAD)、构建编号、语义化版本号(如v1.2.3)作为标签,绝对不要依赖:latest做生产部署。每个修订对应一个唯一标签的镜像,确保旧修订的镜像不会被覆盖。 - 保留历史镜像与修订:在ACR中保留所有曾部署过的镜像(可设置清理策略,比如仅删除N天前的非生产镜像),同时保留对应的应用修订,回滚时直接激活旧修订即可,它指向的是未被修改的可靠历史镜像。
- 加入自动化验证与回滚:在CI/CD流程中添加部署验证步骤(如健康检查、冒烟测试),一旦检测到部署失败,自动触发回滚至上一个成功的修订。
- 镜像签名与验证:生产环境对镜像进行签名,部署前验证镜像的完整性和来源,防止恶意或篡改的镜像被部署。
- 采用渐进式部署策略:用蓝绿部署或金丝雀发布,先将新版本部署到小流量范围验证,确认没问题再全量切换,即使出问题影响范围也小,回滚更简单。
内容的提问来源于stack exchange,提问作者msmilkoff
相关产品推荐
相关产品推荐

