推送Docker镜像时自动更新Azure Container Apps应用
实现Azure Container Apps自动更新(基于ACR的develop镜像推送)
前提条件
- 已完成Azure Container Apps实例部署,且当前使用的镜像存储在你的Azure Container Registry(ACR)中
- ACR与Container Apps处于同一Azure租户,确保资源间有权限互通
步骤1:给ACR配置镜像推送事件通知
登录Azure门户,找到你的ACR实例:
- 进入事件菜单下的事件订阅,点击「+ 添加」创建新订阅
- 订阅名可自定义,比如
acr-develop-push-trigger - 事件类型只勾选镜像推送
- 筛选条件里设置镜像标签为
develop,确保只有推该标签的镜像才会触发事件
- 订阅名可自定义,比如
步骤2:把事件订阅目标指向Container Apps
在事件订阅的目标详情区域:
- 目标类型选择
Azure Container Apps - 选中你要自动更新的Container Apps实例
- 系统会自动尝试配置权限,如果提示权限不足,手动给ACR的服务主体分配
Container Apps Contributor权限到Container Apps所在的资源组
步骤3:验证自动更新效果
- 本地构建并推送develop标签镜像到ACR:
docker build -t 你的ACR名称.azurecr.io/你的镜像名:develop . docker push 你的ACR名称.azurecr.io/你的镜像名:develop - 等待数分钟后,打开Container Apps的修订版本页面,查看是否生成新的修订版本
- 如果新修订未自动激活,进入Container Apps的配置页面,将修订版本模式改为
Multiple并开启自动激活选项
用Azure CLI快速配置(备选)
习惯命令行操作的话,直接执行以下命令:
- 创建事件订阅:
az eventgrid event-subscription create \ --name acr-develop-push-sub \ --source-resource-id /subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.ContainerRegistry/registries/<ACR名称> \ --endpoint-type azurecontainerapp \ --endpoint /subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.App/containerApps/<Container Apps名称> \ --included-event-types Microsoft.ContainerRegistry.ImagePushed \ --subject-filter-suffix ":develop"
- 补全权限(若需要):
az role assignment create \ --assignee <ACR的服务主体ID> \ --role "Container Apps Contributor" \ --scope /subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.App/containerApps/<Container Apps名称>
内容的提问来源于stack exchange,提问作者Lóri Nóda
相关产品推荐
相关产品推荐

