如何从一个Azure管道将多个映像推送到Docker集线器

时间:2020-01-23 08:57:48

标签: azure docker azure-devops

在我的项目中,我有3个Dockerfile,一个用于主项目,一个用于我的数据库,一个用于nginx服务器。它们都在我的项目结构中的不同文件夹中。

我正在尝试让我的Azure管道分别构建每个对应的映像,并将3个独立的映像推送到Docker集线器,每个Dockerfile一个。但是,构建管道中的工件仅包含1个Dockerfile,如下图所示。从日志看来,这是我数据库文件夹中的Dockerfile,这也是我项目结构中的第一个文件夹。有没有一种方法可以构建和推送3个映像,每个Dockerfile都有一个镜像?

enter image description here

1 个答案:

答案 0 :(得分:0)

问题出在构建定义中,您可能没有将所有必要的文件复制到发布构建工件的文件夹中。

因此,如果您的目标是首先使用三个单独的docker文件创建构建工件,则需要将必要的文件复制到工件暂存目录,然后将其发布。例如:

- task: CopyFiles@2
  inputs:
    sourceFolder: 'SomeContainer\'
    contents: '**'
    targetFolder: '$(Build.ArtifactStagingDirectory)\SomeContainer' 

- task: PublishBuildArtifacts@1
  inputs:
    pathtoPublish: '$(Build.ArtifactStagingDirectory)' 
    artifactName: MyContainersBuildArtifact 

根据需要添加复制步骤,并在ArtifactStagingDirectory下创建所需的文件夹结构。

复制文件任务也有一些示例:https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml#usage

您还可以在构建过程中构建和推送映像,或者在发行版定义中使工件直接指向源代码控制存储库。