Настройка конвейеров Azure для мультиконтейнерного приложения Azure (несколько репозиториев) - PullRequest
0 голосов
/ 12 декабря 2018

В настоящее время у меня есть веб-приложение, разделенное на три части.Каждая часть имеет свой собственный репозиторий git.

  1. Frontend Angular (foo.bar)
  2. Backend Angular (foo.bar/admin)
  3. .NET Core API (foo.bar/api)

Впереди находится сервер NGINX, который действует как обратный прокси-сервер.В настоящее время все это выполняется на виртуальной машине вместе с сервером Jenkins, что позволяет мне разрабатывать и развертывать каждую часть отдельно, что мне действительно нравится.

Я хотел бы поместить приложение в контейнер и переместить его в веб-службу Azure дляКонтейнеры.Для CD / CI я хотел бы использовать Azure DevOps & Azure Pipelines.Поскольку веб-служба Azure для контейнеров поддерживает несколько контейнеров через Docker Compose и Kubernetes.

Основной вопрос: Как создать и развернуть один конкретный контейнер (например, Azure / внешний интерфейс: 10)в мультиконтейнерной (через Docker Compose) среде?(Без построения всех других контейнеров)

Если это возможно ...

  • Как настроить конвейеры Azure и реестр контейнеров Azure, чтобы разрешить мне отдельные развертывания контейнеров
  • Где находится файл docker-compose?В отдельном репозитории?
  • Где находится обратный прокси-сервер NGINX Dockerfile?Также в отдельном репозитории?

Или мне нужно использовать Kubernetes?

В качестве альтернативы, я мог бы использовать три разных Веб-приложения в одном и том же плане обслуживания и контролировать его для каждого домена / подсчета.-domain.

  1. Фронтенд угловой (foo.bar)
  2. Бэкэнд угловой (admin.foo.bar)
  3. .NET Core API (api.foo.bar)

Я не знаю с чего начать.Это тоже маленький проект.Я не хочу делать это слишком сложным.

Любой совет более чем приветствуется.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Вы можете использовать реестр контейнеров, который позволит вам использовать docker для создания каждого отдельного контейнера.Затем вы можете развернуть мультиконтейнерное приложение, используя контейнеры из реестра контейнеров.

Создание файла контейнера следует стандартным методам, позволяющим скопировать конфигурацию и т. Д.После сборки вы можете выдвинуть их, пометив их следующим образом: container_registry_name/container_name:{{.Run.ID}}

Я бы предложил на основе предоставленного образца использовать рабочую базу данных вместо контейнера, поскольку я столкнулся с проблемами, при которых данные БД сбрасываются наперезапуск контейнера.Тома для файлов могут быть сохранены с помощью следующего:

  • $ {WEBAPP_STORAGE_HOME} / что-то / другое: / var / www / html

Docker-Compose дляКонтейнеры (в настоящее время) не позволяют вам использовать build в конвейере Azure, так как он предназначен только для развертывания

Сначала нужно будет собрать файлы Docker, а затем сослаться на ваши новые сохраненные образы реестра контейнеров в Docker.-compose.yml.Также обратите внимание, что вы не можете просто ссылаться на изображение концентратора докера и изображение реестра контейнера в одном и том же файле компоновки.Вам нужно будет вытащить и пометить или построить и пометить контейнер, чтобы использовать его таким образом.Вы можете использовать образы реестра контейнеров или общедоступные изображения.

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

 DOCKER_REGISTRY_SERVER_USERNAME = [azure-container-registry-name]
 DOCKER_REGISTRY_SERVER_URL = [azure-container-registry-name].azurecr.io
 DOCKER_REGISTRY_SERVER_PASSWORD = [password]

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

0 голосов
/ 12 декабря 2018

У меня нет опыта работы с конвейерами Azure, но есть некоторые идеи относительно реестра контейнеров Azure и веб-приложения Azure для контейнеров.

Во-первых, если вы просто хотите создать один конкретный контейнер вКонтейнер с помощью Docker compose, вы можете просто установить это в учебнике :

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

Композит также может работать с одним набором контейнеров в файле.

Secondфайл compose может находиться везде, где вы запускаете команду для создания Web App for Container.Например, вы можете запустить команду CLI на локальном компьютере с файлом композиции, который хранится на вашем локальном компьютере.

В-третьих, если вы используете Azure Web App для контейнера, вы должны подготовить образ докера, готовый доваш репозиторий, например, реестр контейнеров Azure.Он не любит docker compose, установленный на вашем локальном компьютере.

AKS также является хорошим выбором.Вы можете создать сервис один за другим или установить их все в одном файле yaml.Это довольно гибкий.

Надеюсь, это поможет вам.Если вам нужна дополнительная помощь по поводу AKS или ACR, пожалуйста, отправьте сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...