登录Azure管道中的Azure容器注册表

登录Azure管道中的Azure容器注册表,azure,docker-compose,azure-pipelines,Azure,Docker Compose,Azure Pipelines,我无法按照文档使用任务登录Azure中的容器注册表”DockerCompose@0“ 文件建议使用: variables: azureContainerRegistry: Contoso.azurecr.io azureSubscriptionEndpoint: Contoso steps: - task: DockerCompose@0 displayName: Container registry login inputs: containerregistrytype

我无法按照文档使用任务登录Azure中的容器注册表”DockerCompose@0“

文件建议使用:

variables:
  azureContainerRegistry: Contoso.azurecr.io
  azureSubscriptionEndpoint: Contoso
steps:
- task: DockerCompose@0
  displayName: Container registry login
  inputs:
    containerregistrytype: Azure Container Registry
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
其中azureSubscriptionEndpoint是ARM的服务连接的名称

我使用了以下管道:

pool:
  name: Hosted Ubuntu 1604

variables:
  azureContainerRegistry: <ACRName>.azurecr.io
  azureSubscriptionEndpoint: <SubscriptionName> (<SubscriptionID>)

steps:

  - task: DockerCompose@0
    displayName: Container registry login
    inputs:
      containerregistrytype: Azure Container Registry
      azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
      azureContainerRegistry: $(azureContainerRegistry)

  - task: DockerCompose@0
    inputs:
      containerregistrytype: 'Azure Container Registry'
      azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
      azureContainerRegistry: '{"loginServer":"<ACRName>.azurecr.io", "id" : "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/Microsoft.ContainerRegistry/registries/<ACRName>"}'
      dockerComposeFile: '<Path>/docker-compose.yml'
      action: 'Build services'

  - task: DockerCompose@0
    inputs:
      containerregistrytype: 'Azure Container Registry'
      azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
      azureContainerRegistry: '{"loginServer":"<ACRName>.azurecr.io", "id" : "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/Microsoft.ContainerRegistry/registries/<ACRName>"}'
      dockerComposeFile: '<Path>/docker-compose.yml'
      action: 'Push services'

  - task: CopyFiles@2
    displayName: "Copy Files to: $(Build.ArtifactStagingDirectory)"
    inputs:
      SourceFolder: <Path>
      Contents: '**\docker-compose.yml'
      TargetFolder: "$(Build.ArtifactStagingDirectory)"

  - task: PublishBuildArtifacts@1
    displayName: "Publish Artifact: drop"
##[error]Input required: dockerComposeCommand
对于第一个任务(容器注册表登录)


我哪里出错了?

我猜您不需要从构建中执行登录步骤,docker任务使用azure订阅端点处理身份验证(如果已预配置),如果未预配置,请将您的服务主体权限授予acrpush。

您误解了文档您不需要单独的登录步骤,您必须在正在使用的每个DockerCompose任务上指定登录信息

我猜答案是一样的,不是吗?差不多-在你正确之前没有看到你的答案。我确实怀疑这一点,但我在构建和推送的第二和第三个任务操作中对容器注册表(azureContainerRegistry)的引用并没有按预期工作。所以我把它改成了.azurecr.io,现在一切正常。非常感谢。