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

如何通过Azure DevOps Pipeline将Docker Hub集成到Azure Container Apps

用Docker Hub替代ACR部署Azure Container Apps的可行方案

Azure CLI的az containerapp命令其实支持任意容器镜像仓库,包括Docker Hub,只是官方文档示例多使用ACR,导致你误以为只能关联ACR。以下是具体实现方法:

一、直接通过Azure CLI配置Docker Hub镜像

无论是创建新的Container App还是更新现有应用,都可以直接指定Docker Hub的镜像地址:

创建Container App(公共/私有镜像)

az containerapp create \
  --name <你的容器应用名称> \
  --resource-group <资源组名称> \
  --image docker.io/<Docker Hub用户名>/<镜像名称>:<标签> \
  --environment <容器应用环境名称> \
  # 若使用私有Docker Hub仓库,需添加以下认证参数
  --registry-server docker.io \
  --registry-username <Docker Hub用户名> \
  --registry-password <Docker Hub访问令牌/密码>

更新现有Container App的镜像

如果已经配置过私有仓库的认证信息,更新镜像只需指定新的镜像标签即可:

az containerapp update \
  --name <你的容器应用名称> \
  --resource-group <资源组名称> \
  --image docker.io/<Docker Hub用户名>/<镜像名称>:<新标签>

二、Azure DevOps流水线配置(CI/CD流程)

将流水线拆分为构建推送镜像到Docker Hub和更新Azure Container App两个阶段:

1. 构建并推送镜像到Docker Hub

  • 先在Azure DevOps的「项目设置-服务连接」中添加Docker Hub的服务连接(类型选择「Docker Registry」,服务器地址填docker.io,输入用户名和生成的访问令牌)。
  • 在流水线YAML中添加构建推送任务:
steps:
- task: Docker@2
  displayName: 构建并推送Docker镜像至Docker Hub
  inputs:
    containerRegistry: '<你的Docker Hub服务连接名称>'
    repository: '<Docker Hub用户名>/<镜像名称>'
    command: 'buildAndPush'
    Dockerfile: '**/Dockerfile'
    tags: |
      $(Build.BuildId)
      latest

2. 更新Azure Container App

使用Azure CLI任务执行镜像更新命令,若为私有仓库且首次配置,需先设置认证信息:

# 首次配置私有仓库凭证(仅需执行一次,后续更新可省略)
- task: AzureCLI@2
  displayName: 配置Docker Hub私有仓库凭证
  inputs:
    azureSubscription: '<你的Azure服务连接名称>'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az containerapp update \
        --name <你的容器应用名称> \
        --resource-group <资源组名称> \
        --registry-server docker.io \
        --registry-username $(DockerHubUsername) \
        --registry-password $(DockerHubPassword)
  env:
    DockerHubUsername: $(DockerHubUsername) # 从Azure DevOps变量组/保密变量中读取
    DockerHubPassword: $(DockerHubPassword)

# 更新容器应用镜像
- task: AzureCLI@2
  displayName: 更新Azure Container App镜像
  inputs:
    azureSubscription: '<你的Azure服务连接名称>'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az containerapp update \
        --name <你的容器应用名称> \
        --resource-group <资源组名称> \
        --image docker.io/<Docker Hub用户名>/<镜像名称>:$(Build.BuildId)

注意事项

  • 公共Docker Hub镜像无需添加认证参数,直接指定完整镜像地址即可。
  • Docker Hub推荐使用访问令牌替代密码,可在账号设置的「Security」页面生成,安全性更高。
  • 若你的Container App环境配置了虚拟网络,需确保网络策略允许访问Docker Hub(默认无限制)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:47:38