Выпуск развертывания службы приложений Azure (DevOps Azure) перезаписывает параметры составления (предварительного просмотра) Multi-Container Docker в портале Azure.

У меня есть мультиконтейнерное приложение, работающее со службой приложений - веб-приложение для контейнеров. Все работает нормально, если на вкладке "Настройки контейнера" указана конфигурация Docker Compose (Preview).

В настоящее время я использую DevOps Azure для создания сборок для определенных контейнеров, а затем использую опцию " Непрерывное развертывание" (в портале Azure) в разделе "Настройки контейнера", чтобы извлечь последний развернутый образ контейнера из ACR. Это тоже отлично работает. Я могу запускать сборки для отдельных контейнеров и развертывать только определенный контейнер, не затрагивая веб-приложение. (Каждый контейнер представляет собой отдельный проект и имеет только Dockerfile, не требуя docker-compose)

Однако, когда я создаю выпуск из Azure DevOp с использованием Azure App Service Deploy (версия 4.*), конфигурация Docker Compose (Preview) в портале Azure полностью стирается, и по умолчанию устанавливается значение "Единый контейнер", и приложение разрывается. Конфигурация Docker Compose необходима, поскольку она делает основной контейнер осведомленным о других контейнерах.

Я использую версию 4. * службы развертывания приложений Azure. Я хотел бы использовать функцию выпуска Azure DevOps, поскольку она обеспечивает больший контроль.

Есть ли способ указать конфигурацию нескольких контейнеров docker-compose из Azure App Service Deploy версии 4, чтобы служба приложений знала о конфигурации нескольких контейнеров, а не уничтожала конфигурацию нескольких контейнеров в Docker Compose (предварительный просмотр)

Спасибо каран

0 ответов

Заменить Azure App Service deploy задача в вашем Release трубопровод с Azure Web App for Containersзадача. Есть параметры для нескольких образов и файл конфигурации (Docker-Compose.yml).

Как упоминал Dave, это возможно с помощью задачи AzureWebAppContainer, однако в документации не упоминаются варианты, касающиеся развертывания в нескольких контейнерах.

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

https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/AzureWebAppContainerV1/taskparameters.ts

Я резюмирую свою настройку, чтобы дать вам представление о том, как ее можно использовать. У меня есть многоступенчатый конвейер, определенный в YAML. Есть два этапа: на первом этапе создаются и публикуются образы Docker, а на втором этапе обновляется служба приложений Web App for Containers.

На первом этапе также создается артефакт, а именно docker-compose.ymlфайл, который используется для настройки веб-приложения для службы приложений контейнеров. В моем репозитории есть шаблон для этого файла. Во время выполнения конвейера теги образов докеров заменяются в этом шаблоне (например, с помощью envsubst или sed). Тогда полученный docker-compose.yml файл публикуется как артефакт.

       - task: PublishBuildArtifacts@1
  displayName: "Publish artifact"
  inputs:
    pathToPublish: $(Build.SourcesDirectory)/pipelines/assets/docker-compose.yml
    artifactName: yml

На втором этапе конвейера артефакт загружается и используется для настройки веб-приложения для контейнеров. В примере ниже AzureWebAppContainerэто этап развертывания.

       - task: AzureWebAppContainer@1
  displayName: 'Azure Web App for Containers'
  inputs:
    azureSubscription: '<YOUR_SUBSCRIPTION>'
    appName: '<YOUR_WEB_APP_FOR_CONTAINERS>'
    multicontainerConfigFile: $(System.ArtifactsDirectory)/yml/docker-compose.yml

Созданный docker-compose.yml хранится как артефакт, и вы всегда можете просмотреть его позже.

Другие вопросы по тегам