我们已经实现了一个CI/CD管道,以自动构建新版本并将其部署到Azure应用程序服务实例的暂存槽中。我们构建新的容器映像并将其推送到标有:latest
的Azure容器注册表,然后触发webhook重新部署暂存槽。将此插槽热交换到生产也可以。
但是,如果我们在暂存上尝试尚未准备好进行生产的新功能,那么只需重新启动生产插槽就会自动加载所有:latest
映像。这并不理想。此外,恢复热插拔将不起作用,因为现在两个插槽都在:latest
上。
理想情况下,我们会用构建号标记我们的docker映像,但我看不到一种简单的方法来动态更新多容器配置(docker-compose.yml
(以使用这些构建号。我们的CI/CD管道目前在Bitbucket管道上运行,但如果需要,我们也可以切换到Azure DevOps。关于如何解决这个问题,有什么提示吗?
以下是我到目前为止的想法,但理想情况下有一种更简单的方法,不需要从管道访问服务原则:
- 在Azure上创建服务主体以在管道中使用
- 使用BITBUCKET_BUILD_NUMBER标记当前docker图像(例如,请参见此处(
- 创建一个新的docker-compose.yml,将
BITBUCKET_BUILD_NUMBER
替换为例如sed - 运行
az webapp config container set --multicontainer-config-file docker-compose.yml -s staging
(请参阅此处( - 这也应该自动触发暂存插槽的重新加载
如果你能想出一个更简单的方法,请告诉我。