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

如何在Azure DevOps中通过DockerCompose@0任务部署多容器至ACI?

解决方案:通过Docker CLI上下文在Azure DevOps流水线部署到ACI

首先明确:DockerCompose@0任务无法直接部署容器到ACI,它的「运行镜像」选项仅针对代理本地的Docker主机。你可以通过Docker CLI的ACI上下文功能实现部署,以下是流水线中的具体配置步骤:

1. 确认代理环境支持Docker ACI上下文

如果使用微软托管代理,选择ubuntu-latest或windows-latest镜像即可——它们自带的Docker版本已集成ACI上下文功能。如果是自托管代理,需确保Docker版本≥20.10,并启用ACI集成模块。

2. 添加Azure登录任务

先通过Azure CLI完成订阅授权,确保流水线有权操作目标资源:

- task: AzureCLI@2
  displayName: 'Azure 登录授权'
  inputs:
    azureSubscription: '你的Azure服务连接名称'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: az account show

(注:使用已配置的服务连接时,AzureCLI@2会自动完成登录,上述脚本仅用于验证连接有效性)

3. 创建并切换到Docker ACI上下文

用Docker CLI创建指向目标ACI资源组的上下文,切换后所有Docker命令都会指向ACI:

- task: Bash@3
  displayName: '配置Docker ACI上下文'
  inputs:
    targetType: 'inline'
    script: |
      # 创建ACI上下文,替换为你的资源组和订阅ID
      docker context create aci my-aci-ctx --resource-group <你的资源组名称> --subscription <你的订阅ID>
      # 切换到ACI上下文
      docker context use my-aci-ctx

4. 部署Docker Compose到ACI

切换上下文后,直接用docker compose up完成部署。注意提前确保镜像已推送到ACR,且ACI有权限拉取(可给ACI服务主体分配ACR拉取权限,或启用ACR与ACI的资源集成):

- task: Bash@3
  displayName: '通过Docker Compose部署到ACI'
  inputs:
    targetType: 'inline'
    script: |
      # 登录私有ACR(如果镜像存放在私有仓库)
      docker login <你的ACR名称>.azurecr.io -u $(acrUsername) -p $(acrPassword)
      # 启动容器组
      docker compose up -d

可选:清理上下文

如果不需要保留ACI上下文,可在部署完成后清理:

- task: Bash@3
  displayName: '清理Docker ACI上下文'
  inputs:
    targetType: 'inline'
    script: |
      docker context use default
      docker context rm my-aci-ctx

关键注意事项

  • 确保docker-compose.yml中的镜像路径为ACR完整路径(例如<acr-name>.azurecr.io/<image-name>:<tag>)
  • 流水线使用的服务主体需拥有目标资源组的Contributor权限
  • ACI对容器组的CPU、内存有配额限制,需在docker-compose.yml中合理配置资源参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:25:53