登录到Azure Pipeline中的Azure容器注册表

时间:2020-04-20 07:43:30

标签: azure docker-compose azure-pipelines

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

文档建议使用:

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

第一个任务(容器注册表登录)。

我要去哪里错了?

2 个答案:

答案 0 :(得分:1)

我想您不需要构建中的登录步骤,如果预先配置了docker任务,则使用azure订阅终结点来处理Auth任务;否则,请赋予服务主体访问acrpush的权限。

答案 1 :(得分:1)

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