Создание контейнерного веб-приложения Python в Azure

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

Служба приложений Azure позволяет развертывать и запускать контейнерные веб-приложения с помощью конвейеров CI/CD с таких платформ, как Docker Hub, Реестр контейнеров Azure и Azure DevOps. После того как образ Docker будет помещён в Реестр контейнеров Azure, его можно развернуть в Служба приложений Azure.

Необходимые условия

Прежде чем начать, убедитесь, что вы выполнили часть 2 этой серии учебников, которая охватывает:

  • Клонирование примера репозитория (Django или Flask).
  • Создание группы ресурсов для ресурсов Azure.
  • Запуск контейнерного приложения локально для проверки его работы.

Кроме того, вам понадобится следующее:

Это важно

Пример Dockerfile использует python:3.8-slim в качестве базового образа. Python 3.8 достигли окончания срока действия в октябре 2024 года и больше не получают обновления системы безопасности. Обновите Dockerfile, чтобы использовать python:3.12-slim или python:3.13-slim для рабочих развертываний.

На этой схеме службы выделены компоненты, описанные в этой статье.

Снимок экрана, на котором представлены службы, используемые в руководстве - контейнерное приложение Python в Azure с выделенным путём сборки в облаке.

Создание реестра контейнеров Azure

Если у вас уже есть Реестр контейнеров Azure, пропустите этот шаг и перейдите к следующему шагу. В противном случае создайте новый Реестр контейнеров Azure с помощью Azure CLI.

Команды Azure CLI можно выполнять в Azure Cloud Shell или локальной среде разработки с установленным Azure CLI.

Заметка

Используйте те же имена, что и в части 2 этого учебного пособия.

  1. Создайте реестр контейнеров Azure с помощью команды az acr create.

    #!/bin/bash
    # Use the resource group that you created in part 2 of this tutorial series.
    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters.
    # If the name is already taken, you'll receive an error. Choose a different name and retry.
    REGISTRY_NAME='msdocscontainerregistryname'
    
    echo "Creating Azure Container Registry $REGISTRY_NAME..."
    az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standard
    

    В выходных данных JSON команды найдите значение loginServer. Это значение представляет полное имя реестра (все строчные буквы) и содержит имя реестра.

    Пример результата:

    {
      "loginServer": "msdocscontainerregistryname.azurecr.io",
      "name": "msdocscontainerregistryname",
      ...
    }
    
  2. Если вы используете Azure CLI на локальном компьютере, выполните команду az acr login, чтобы войти в реестр контейнеров.

    az acr login -n $REGISTRY_NAME
    

    Параметр -n принимает короткое имя реестра (например, msdocscontainerregistryname) или полное имя реестра (msdocscontainerregistryname.azurecr.io). Команда выполняет проверку подлинности Docker с помощью Реестр контейнеров Azure с помощью учетных данных Azure CLI.

    Ожидаемые выходные данные:

    Login Succeeded
    

    Заметка

    Если вы используете Azure Cloud Shell, вам не нужно выполнять az acr login команду, так как сеанс Cloud Shell автоматически обрабатывает проверку подлинности.

Создание образа в реестре контейнеров Azure

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

  • Azure Cloud Shell позволяет создавать образ полностью в облаке, независимо от локальной среды.
  • Кроме того, можно использовать VS Code или Azure CLI для создания образа в Azure из локальной установки без необходимости локального запуска Docker.

Команды Azure CLI можно выполнять в локальной среде разработки, используя установленный Azure CLI или Azure Cloud Shell.

  1. В консоли перейдите в корневую папку для клонированного репозитория из части 2 этого руководства.

  2. Создайте образ контейнера с помощью команды az acr build .

    Локальная разработка:

    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
    

    Azure Cloud Shell:

    Если вы используете Azure Cloud Shell, укажите URL-адрес репозитория GitHub вместо локального пути (.):

    # For Django sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git
    
    # For Flask sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git
    

    Последним аргументом (. или URL-адресом Git) является контекст сборки Docker — каталог, содержащий файлы Dockerfile и приложения, которые Docker использует для сборки образа.

  3. Убедитесь с помощью команды az acr repository list, что образ контейнера был создан.

    az acr repository list -n $REGISTRY_NAME
    

    Ожидаемые выходные данные:

    [
      "msdocspythoncontainerwebapp"
    ]
    

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