Как развернуть несколько docker образов в Azure службе приложений через Azure конвейеры - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть файл docker compose .yml, который я использую для ручной установки и запуска нескольких docker образов в службе приложений Linux Azure. Мой следующий шаг - автоматизировать это с помощью Azure Pipelines, что я успешно выполнил для одного изображения; но не могу понять, как это сделать для нескольких изображений в одном экземпляре службы приложений.

Это требование клиента для запуска нескольких изображений в одном экземпляре службы приложений. У меня есть некоторая гибкость, если есть намного лучший способ, но стоимость является фактором.

Я специально ищу тип задачи, который нужно добавить в мой конвейер выпуска, и если есть какие-либо примеры или документация, которую я могу читать. Пока что я не нашел ничего, что действительно отвечало бы всем требованиям, но я не инженер DevOps, поэтому, скорее всего, я просто не правильно задаю вопрос.

Вот пример docker составить файл 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 

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Не уверен, подходит ли вам использованный метод, но вы можете проверить.

1) Для запуска нескольких docker изображений в один Azure экземпляр службы приложения, во-первых, мне нужно, чтобы мой Azure тип службы приложения был доступен для Docker -Compose :

enter image description here

Примечание. Поскольку мои изображения хранятся в ACR, здесь я подключаю эту службу приложения Azure к используемому мной ACR.

2) Загрузите docker-compose.yml в эту конфигурацию .

3) Третий шаг, который является очень значимым, - это включение Непрерывное развертывание . Значение этого шага состоит в том, что когда новые изображения передаются в ACR, который связан с текущей службой приложения. Он получит последний образ автоматически из ACR, а затем развернет его как настроенный файл docker.

После включения Непрерывное развертывание нажмите show url , чтобы получить URL Wehhook:

enter image description here

4) Go ACR, затем выберите Webhooks с левой панели. Add => Введите webhook URL, который мы скопировали из AppService, в Service URL. Сохраните его.

enter image description here


Теперь каждый раз, когда вы выбираете sh новую версию изображения для ACR, Azure Служба приложений инициирует повторное развертывание контейнеров с использованием самого последнего изображения. И мне не нужно настраивать конвейер с задачей развертывания в azure devops.

0 голосов
/ 10 апреля 2020

Итак, для всех, кто хотел, я смог решить мою существующую ситуацию, чтобы убедиться, что во время сборки конвейера я выдвинул файл docker compose в качестве артефакта конвейера. Затем в конвейере выпуска я смог загрузить этот артефакт и использовать его в задаче Azure CLI.

В задаче CLI использовалась команда "az webapp config container set set". Разумно просто, как только я понял это, но было бы неплохо выполнить более подходящую для цели задачу.

Release Pipeline

...