Как развернуть и управлять экземплярами docker в Azure с помощью Azure DevOps?

#azure #docker #docker-compose #azure-devops #azure-pipelines

#azure #docker #docker-compose #azure-devops #azure-конвейеры

Вопрос:

Для нашего проекта требуется два экземпляра docker:

  • пользовательский образ, созданный поверх официального образа PHP с помощью файла Dockerfile
    • требуется доступ к PHP-скриптам (в настоящее время в том же репозитории git, что и Dockerfile)
    • требуется доступ к серверу MySQL, указанному ниже
    • требуется доступ к постоянному тому, содержащему файлы данных и файлы журналов
    • зависит от значений среды для получения паролей MySQL и других секретов или конфигурации
  • официальный образ MySQL
    • требуется доступ к постоянному тому, содержащему файлы данных

Публичный доступ к MySQL должен быть запрещен. Однако должен быть способ подключения к серверу MySQL с определенных компьютеров / конкретных пользователей AAD, если необходимо вручную изменить базу данных или получить ее дамп.

Веб-интерфейс PHP должен быть доступен по протоколу HTTPS с использованием пользовательского сертификата или сертификата Let’s Encrypt. Не уверен, следует ли обрабатывать это внутри экземпляра PHP, через прокси-экземпляр, через шлюз Azure API или другим способом.

После развертывания нового образа PHP CI должен запустить скрипт внутри образа docker, который переносит схему и данные MySQL. Скрипт должен получить пароль, подобный «root» MySQL, чтобы у него было достаточно разрешений для выполнения своей работы.

Мы используем Azure DevOps для репозиториев git и для CI.

Мне удалось настроить конвейер Azure DevOps YAML для создания и публикации пользовательского образа PHP в хранилище контейнеров Azure. Однако я не нашел подходящих задач для запуска / настройки / развертывания / остановки экземпляра контейнера из выпусков Azure DevOps. Я не уверен, что использовать / как добавить поддержку HTTPS.

Это мое первое развертывание docker в рабочей среде — до сих пор я использовал docker только для разработки. Я пытался изучить документы, поисковую сеть, но до сих пор не знаю, каковы наилучшие методы, как их объединить. Я бы оценил любую, даже частичную помощь и подсказки, как правильно развернуть эту вещь. Спасибо.

Комментарии:

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

Ответ №1:

I was able to set up a Azure DevOps Pipeline YAML to build and publish the custom PHP image to an Azure Container Repository. However, I found no suitable tasks to start/configure/deploy/stop a Container Instance from Azure DevOps Releases. Neither I am sure what to use / how to add HTTPS support.

Поскольку вы уже добились успеха, установите CI для создания образа docker и отправьте его в реестр контейнеров Azure (ACR).

Затем для обработки развертывания можно использовать как Azure App Service deploy, так и Azure Web App for Containers task.

Задача контейнера Azure WebApp, аналогичная другим встроенным задачам Azure, требует подключения к службе Azure в качестве входных данных. В подключении к службе Azure хранятся учетные данные для подключения из конвейеров Azure или сервера Azure DevOps к Azure.

Пожалуйста, взгляните на приведенные ниже блоги: как люди на самом деле создают свои контейнеры, а затем развертывают их в каждой среде?:

Neither I am sure what to use / how to add HTTPS support.

В этой части, по моему личному пониманию, это должно быть больше связано со стороной образа Docker. Это не должно быть связано со стороной конвейера Azure DevOps.