Обзор. Развертывание веб-приложения Python в приложениях контейнеров Azure

В этом руководстве показано, как контейнеризировать веб-приложение Python и развернуть его в приложениях контейнеров Azure. Пример веб-приложения будет контейнеризован и образ Docker, хранящийся в Реестр контейнеров Azure. Приложения контейнеров Azure настроены для извлечения образа Docker из реестра контейнеров и создания контейнера. Пример приложения подключается к База данных Azure для PostgreSQL для демонстрации взаимодействия между приложениями-контейнерами и другими ресурсами Azure.

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

В этом руководстве вы узнаете:

После этого руководства вы настроите для непрерывной интеграции (CI) и непрерывного развертывания (CD) веб-приложения Python в Azure.

Обзор сервиса

Схема служб, поддерживающая этот учебник, показывает, как используются локальные среды, репозитории GitHub и службы Azure.

A screenshot of the environments and services used in the Tutorial - Deploy a Python App on Azure Container Apps.

Компоненты, поддерживающие этот учебник, и показаны на приведенной выше схеме:

  • Приложения контейнеров Azure

    • С помощью Azure Container Apps можно запускать микрослужбы и контейнерные приложения на бессерверной платформе. Бессерверная платформа означает, что вы пользуетесь преимуществами запуска контейнеров с минимальной конфигурацией. С помощью приложений контейнеров Azure приложения могут динамически масштабироваться на основе таких характеристик, как HTTP-трафик, обработка на основе событий или загрузка ЦП или памяти.
    • Контейнерные приложения извлекает образы Docker из Реестр контейнеров Azure. Изменения образов контейнеров активируют обновление развернутого контейнера. Вы также можете настроить GitHub Actions для активации обновлений.
  • Реестр контейнеров Azure;

    • Реестр контейнеров Azure позволяет работать с образами Docker в Azure. Так как реестр контейнеров близок к развертываниям в Azure, у вас есть контроль доступа, что позволяет использовать группы и разрешения Microsoft Entra для управления доступом к образам Docker.
    • В этом руководстве источник реестра Реестр контейнеров Azure, но вы также можете использовать Docker Hub или частный реестр с незначительными изменениями.
  • База данных Azure для PostgreSQL

    • В примере кода хранятся данные приложения в базе данных PostgreSQL.
    • Приложение-контейнер подключается к PostgreSQL через переменные среды, настроенные явным образом или с помощью Подключение службы Azure.
  • GitHub

    • Пример кода для этого учебника находится в репозитории GitHub, который вы закрепите и клонируйте локально. Чтобы настроить рабочий процесс CI/CD с помощью GitHub Actions, вам потребуется учетная запись GitHub.
    • Вы по-прежнему можете следовать вместе с этим руководством без учетной записи GitHub, локальной работы или в Azure Cloud Shell для создания образа контейнера из репозитория примера кода.

Редакции и CI/CD

Чтобы внести изменения в код и отправить их в контейнер, создайте новый образ Docker с изменением. Затем вы отправляете образ в реестр контейнеров и создаете новую редакцию приложения контейнера.

Для автоматизации этого процесса в руководстве показано, как создать конвейер непрерывной интеграции и непрерывной доставки (CI/CD) с помощью GitHub Actions. Конвейер автоматически создает и развертывает код в приложении-контейнере при отправке новой фиксации в репозиторий GitHub.

Проверка подлинности и безопасность

В этом руководстве вы создадите образ контейнера Docker непосредственно в Azure и развернете его в приложениях контейнеров Azure. Контейнерные приложения выполняются в контексте среды, которая поддерживается виртуальная сеть Azure (виртуальная сеть). Виртуальные сети — это базовый стандартный блок для частной сети в Azure. Приложения-контейнеры позволяют предоставлять приложение-контейнер для общедоступного веб-сайта, включив входящий трафик.

Чтобы настроить непрерывную интеграцию и непрерывную доставку (CI/CD), вы авторизуете приложения контейнеров Azure в качестве Приложение OAuth для учетной записи GitHub. В качестве Приложение OAuth контейнерные приложения записывают файл рабочего процесса GitHub Actions в репозиторий с информацией о ресурсах и заданиях Azure для их обновления. Рабочий процесс обновляет ресурсы Azure с помощью учетных данных субъекта-службы Microsoft Entra (или существующего) с доступом на основе ролей для приложений контейнеров и имени пользователя и пароля для Реестр контейнеров Azure. Учетные данные хранятся безопасно в репозитории GitHub.

Наконец, в примере веб-приложения учебника хранятся данные в базе данных PostgreSQL. Пример кода подключается к PostgreSQL через строка подключения. Во время настройки приложения-контейнера учебник описывает настройку переменных среды, содержащих сведения о подключении. Вы также можете использовать Подключение службы Azure для выполнения одной и той же задачи.

Необходимые компоненты

Для работы с этим руководством потребуется следующее:

  • Учетная запись Azure, в которой можно создать:

    • Реестр контейнеров Azure
    • Среда "Приложения контейнеров Azure"
    • База данных Azure для PostgreSQL
  • Visual Studio Code или Azure CLI в зависимости от используемого средства

    • Для Visual Studio Code вам потребуется расширение "Приложения контейнеров".
    • Azure CLI можно также использовать с помощью Azure Cloud Shell.
  • Пакеты Python:

Пример приложения

Пример приложения Python — это приложение проверки ресторана, которое сохраняет ресторан и просматривает данные в PostgreSQL. В конце руководства у вас будет развернуто и запущено приложение проверки ресторана в приложениях контейнеров Azure, которое выглядит как на снимке экрана ниже.

A screenshot of the sample app created from the Python containerized web app used in the Tutorial - Containerized Python App on Azure.

Следующий шаг