Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 从monorepo构建多个映像,其中每个服务都有自己的Dockerfile_Azure_Docker_Azure Devops_Azure Container Service - Fatal编程技术网

Azure 从monorepo构建多个映像,其中每个服务都有自己的Dockerfile

Azure 从monorepo构建多个映像,其中每个服务都有自己的Dockerfile,azure,docker,azure-devops,azure-container-service,Azure,Docker,Azure Devops,Azure Container Service,我正在尝试学习Azure DevOps管道和AKS。最终的目标是,但我要把它分成几个小部分,以便了解每个阶段的情况 因此,我目前的目标是 我使用的是一个非常基本的monorepo,它的结构非常简单: acr-test/ client/ Dockerfile db/ Dockerfile server/ Dockerfile 我想为应用程序的每个部分生成一个映像,以便生成arc测试客户端和arc测试服务器 当我在Azure DevOps中“创建管道”并让它构建

我正在尝试学习Azure DevOps管道和AKS。最终的目标是,但我要把它分成几个小部分,以便了解每个阶段的情况

因此,我目前的目标是

我使用的是一个非常基本的monorepo,它的结构非常简单:

acr-test/
  client/
    Dockerfile
  db/
    Dockerfile
  server/
    Dockerfile
我想为应用程序的每个部分生成一个映像,以便生成
arc测试客户端
arc测试服务器

当我在Azure DevOps中“创建管道”并让它构建
Azure管道时,当前发生的情况是,yml
只找到第一个
Dockerfile
并将所有参数基于它,而忽略其他参数

有些我很好奇:

  • 是否可以从单个azure pipelines.yml创建多个映像
  • 每个
    Dockerfile
    是否需要多个
    .yml
  • 我是否需要编写一个单独的
    .sh
    来分别构建和推送它们()
  • 或者这在单一回购协议中根本不可能实现
  • 是的,您需要为此修改
    azure pipelines.yml
  • 不,一对所有人或一对每个dockerfile都可以
  • 不需要,您可以使用
    .sh
    脚本,但在
    azure pipelines.yml中只使用docker任务可能更容易
  • 是的
  • 您需要执行以下操作:

        steps:
        - task: Docker@2
          displayName: Build and push an image to container registry
          inputs:
            command: buildAndPush
            repository: $(imageRepository1)
            dockerfile: $(dockerfilePath1)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
              $(tag1)
        - task: Docker@2
          displayName: Build and push an image to container registry
          inputs:
            command: buildAndPush
            repository: $(imageRepository2)
            dockerfile: $(dockerfilePath2)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
              $(tag2)
        - task: Docker@2
          displayName: Build and push an image to container registry
          inputs:
            command: buildAndPush
            repository: $(imageRepository3)
            dockerfile: $(dockerfilePath3)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
              $(tag3)
    
    或者可以在回购协议中有多个
    something.yml
    ,并为每个组件单独构建(更有意义,待定)

    或者,对于您的文件结构,您可以将相同的yaml文件重用为模板,只需向其提供参数。这将减少代码重复,并允许更轻松地管理构建