Как разместить несколько сайтов в веб-приложении Azure для контейнеров с помощью docker compose

Я хотел бы использовать файл docker compose для развертывания нескольких общедоступных конечных точек для нашего сайта, размещенного на Linux.

У нас уже есть развернутый сайт с изображениями, хранящимися в частной ACR и размещенный в службе приложений Azure (с использованием веб-приложения для контейнеров). Он развертывается через Azure DevOps и хорошо работает.

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

Мы бы хотели избежать второй службы приложения или субдомена, если это возможно. Мы предпочитаем использовать тот же сертификат https и порты (443) для размещения api. Веб-сайт и api имеют схожую базу кода.

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

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

Как мы можем это сделать? Я уже ознакомился с этой документацией: https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-multi-container-app. Однако в этом примере второй контейнер является частным и не раскрывается.

Должны ли мы использовать файл для создания докеров (пример, пожалуйста)? Или, в качестве альтернативы, есть ли способ использовать задачу Azure DevOps для развертывания в виртуальном каталоге так, как я хотел бы. Это задача, которую мы используем для развертывания одного контейнера:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-containers?view=azure-devops


person ossentoo    schedule 17.04.2020    source источник


Ответы (1)


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

В соответствии с особенностью веб-приложения, заключающейся в том, что оно предоставляет снаружи только один контейнер, для достижения своей цели вы можете создать только одно изображение и направить его к конечным точкам самостоятельно в коде или с помощью инструмента, такого как Nginx. . Затем разверните его в веб-приложении для контейнера. Только так вы можете получить доступ к нескольким конечным точкам только из одной службы приложений.

person Charles Xu    schedule 20.04.2020
comment
@ossentoo Рад, что это помогло! - person Charles Xu; 20.04.2020