You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline中AzureContainerApps@1无法部署新镜像求助

问题排查与解决方案

一、初始问题:容器应用未拉取ACR新镜像

你的AzureContainerApps@1任务当前仅完成了镜像构建推送,未明确触发容器应用的版本更新。虽然该任务支持同时完成构建与部署,但可能因配置缺失导致部署步骤未执行。可通过以下两种方式调整:

方案1:完善AzureContainerApps@1任务的部署参数

添加deployToExisting: true参数,明确指定更新现有容器应用:

- task: AzureContainerApps@1
  inputs:
    appSourcePath: '$(Build.SourcesDirectory)'
    azureSubscription: 'my-service-connection'
    acrName: 'MyAcr'
    containerAppName: 'my-backend-app'
    resourceGroup: 'myresourcegroup'
    imageToBuild: MyAcr.azurecr.io/my-backend-app:$(Build.BuildNumber)
    deployToExisting: true # 关键参数:触发现有容器应用更新

方案2:拆分构建推送与部署步骤(推荐,更可控)

用独立步骤完成镜像构建推送,再专门触发容器应用部署,避免任务耦合:

trigger:
- main

pool:
  vmImage: ubuntu-latest

name: '$(Date:yyyyMMdd).$(Rev:rr)'

steps:
# 1. 发布项目到指定目录
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    projects: 'BackEnd/BackEnd.csproj'
    arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)/app'
    publishWebProjects: false

# 2. 登录ACR
- task: Docker@2
  inputs:
    containerRegistry: 'my-service-connection-acr' # 需单独创建ACR服务连接
    command: 'login'

# 3. 构建并推送镜像到ACR
- task: Docker@2
  inputs:
    containerRegistry: 'my-service-connection-acr'
    repository: 'my-backend-app'
    command: 'buildAndPush'
    Dockerfile: '$(Build.ArtifactStagingDirectory)/app/Dockerfile'
    tags: |
      $(Build.BuildNumber)
      latest

# 4. 更新Azure Container App
- task: AzureContainerApps@1
  inputs:
    azureSubscription: 'my-service-connection'
    containerAppName: 'my-backend-app'
    resourceGroup: 'myresourcegroup'
    image: 'MyAcr.azurecr.io/my-backend-app:$(Build.BuildNumber)' # 指定已推送的镜像
    deployToExisting: true

二、后续问题:容器应用版本缩容至0无法访问

出现2个活动版本均缩容到0,通常是部署过程中健康检查失败、资源配额不足或镜像拉取异常导致,可按以下步骤排查:

  • 检查健康配置:在Azure门户容器应用页面,进入「配置」→「健康检查」,确认存活探针/就绪探针的路径、端口与应用实际暴露的一致。探针失败会触发自动缩容。
  • 验证镜像拉取权限:进入容器应用「身份」→「托管标识」,确认该标识已被添加到ACR的AcrPull角色,且角色分配范围覆盖目标ACR。
  • 查看部署日志:在容器应用「修订版本」页面,点击异常版本,查看「日志流」或「容器日志」,排查启动失败的具体原因(如环境变量缺失、端口配置错误)。
  • 清理异常修订版本:若旧版本卡住无法删除,可通过Azure CLI强制清理:
    az containerapp revision delete --name my-backend-app --resource-group myresourcegroup --revision [修订版本名称]
    

关键注意事项

  • 容器应用的修订版本是更新核心:每次部署新镜像都会生成新修订版本,需确保新版本处于「活动」状态(默认自动激活,但健康检查失败时可能不会)。
  • 保留唯一镜像标签:你的$(Build.BuildNumber)配置可保证镜像标签唯一,避免镜像覆盖导致部署混乱。

内容的提问来源于stack exchange,提问作者Mog0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:30:19