如何通过 Azure Pipelines 将多个 docker 映像部署到 Azure 应用服务

Rus*_*uss 1 docker-compose azure-web-app-service docker-container azure-pipelines-release-pipeline

我有一个 docker compose .yml 文件,用于在 Linux Azure 应用服务上手动安装和运行多个 docker 映像。我的下一步是通过 Azure Pipelines 自动执行此操作,我已成功为单个映像执行此操作;但无法弄清楚如何为同一应用服务实例上的多个图像执行此操作。

这是在同一应用服务实例上运行多个图像的客户端要求。如果有更好的方法,我有一些灵活性,但成本是一个因素。

我特别在寻找要添加到我的发布管道中的任务类型,以及是否有任何我可以阅读的示例或文档。到目前为止,我还没有发现任何似乎真正符合要求的东西,但我不是 DevOps 工程师,所以很可能我只是没有正确地问这个问题。

这是我拥有的 docker compose yml 文件的示例。

version: '3.7'
    services:
      exampleapi:
        image: examplecontainerregistry.azurecr.io/example.api:latest
        container_name: example.api
        volumes:
          - example:/mnt/example
          - common:/mnt/common
      certprojectservice:
        image: examplecontainerregistry.azurecr.io/example.certproject.service:latest
        container_name: example.certproject.service
        volumes:
          - example:/mnt/example
          - common:/mnt/common 
      unityemailservice:
        image: examplecontainerregistry.azurecr.io/example.email.service:latest
        container_name: example.email.service
        volumes:
          - example:/mnt/example
          - common:/mnt/common   
      eventconsumerservice:
        image: examplecontainerregistry.azurecr.io/example.eventconsumers.service:latest
        container_name: example.eventconsumers.service
        volumes:
          - example:/mnt/example
          - common:/mnt/common 
      webhookresponseservice:
        image: examplecontainerregistry.azurecr.io/example.webhookresponse.service:latest
        container_name: example.webhookresponse.service
        volumes:
          - example:/mnt/example
          - common:/mnt/common 
      unitywebhooksservice:
        image: examplecontainerregistry.azurecr.io/example.webhooks.service:latest
        container_name: example.webhooks.service
        volumes:
          - example:/mnt/example
          - common:/mnt/common 
Run Code Online (Sandbox Code Playgroud)

Mer*_*SFT 5

不确定我使用的方法是否适合您,但您可以检查一下。

1)要在一个 Azure 应用服务实例中运行多个 docker 映像,首先我需要使我的 Azure 应用服务类型可用于Docker-Compose

在此处输入图片说明

注意:由于我的图像存储在 ACR 中,因此我将这个 Azure 应用服务连接到我使用的 ACR。

2)上传docker-compose.yml到该配置

3)第三步,也是非常有意义的一步,启用持续部署。这一步的意义在于,一旦有新的图像被推送到与当前应用服务连接的 ACR。它会自动从 ACR 获取最新的镜像,然后部署为配置好的 docker-compose 文件。

启用持续部署后,点击show url获取 wehhook URL:

在此处输入图片说明

4)前往ACR,然后Webhooks从左侧面板中选择。Add=> 输入webhook URL我们从 AppService 复制到Service URL. 保存。

在此处输入图片说明


现在,每次将新版本的映像推送到 时ACR,Azure 应用服务都会使用最新的映像触发容器的重新部署。而且我不需要在 azure devops 中配置带有部署任务的管道。