首页 > 解决方案 > 如何通过 Azure Pipelines 将多个 Docker 映像部署到 Azure 应用服务

问题描述

我有一个 docker compose .yml 文件,用于在 Linux Azure App Service 上手动安装和运行多个 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 

标签: docker-composeazure-web-app-serviceazure-pipelines-release-pipelinedocker-container

解决方案


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

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

在此处输入图像描述

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

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

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

启用Continuous Deployment后,点击show url获取 wehhook URL:

在此处输入图像描述

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

在此处输入图像描述


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


推荐阅读