繁体   English   中英

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

[英]Login to Azure Container Registry in Azure Pipeline

我无法按照文档使用“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

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

我哪里错了?

我想您不需要构建中的登录步骤,docker 任务使用 azure 订阅端点处理身份验证,如果它是预先配置的,如果没有 - 给您的服务主体权限来 acrpush。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM