Выпуск развертывания службы приложений 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, однако в документации не упоминаются варианты, касающиеся развертывания в нескольких контейнерах.
Мне пришлось покопаться в исходном коде этой задачи, чтобы узнать параметры задачи.
Я резюмирую свою настройку, чтобы дать вам представление о том, как ее можно использовать. У меня есть многоступенчатый конвейер, определенный в 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
хранится как артефакт, и вы всегда можете просмотреть его позже.