Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как контейнеризировать веб-приложение Python Flask или FastAPI и развернуть его в Azure Container Apps. Azure Container Apps использует технологию контейнеров Docker для размещения встроенных образов и пользовательских образов. Дополнительные сведения об использовании контейнеров в Azure см. в разделе Сравнение параметров контейнеров Azure.
В этом руководстве используется интерфейс командной строки Docker CLI и Azure CLI для создания образа Docker и его развертывания в Azure Container Apps. Вы также можете развернуть с помощью расширения Visual Studio Code и расширения Azure Tools.
Предпосылки
Чтобы завершить работу с этим руководством, вам потребуется:
Учетная запись Azure, в которой можно развернуть веб-приложение для Azure Container Apps. (Процесс создает рабочую область Azure Container Registry и Log Analytics рабочую область.)
Azure CLI, Docker и Docker CLI установленных в вашей локальной среде.
Получите пример кода
В локальной среде получите код.
Добавить файлы Dockerfile и .dockerignore
Добавьте Dockerfile, чтобы указать Docker, как создать образ. Dockerfile указывает использование Gunicorn, веб-сервера уровня производства, который пересылает веб-запросы на платформы Flask и FastAPI. Команды ENTRYPOINT и CMD предписывают Gunicorn обрабатывать запросы объекта приложения.
# syntax=docker/dockerfile:1
FROM python:3.11
WORKDIR /code
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 50505
ENTRYPOINT ["gunicorn", "--config", "gunicorn.conf.py", "app:app"]
В этом примере используется 50505 порт контейнера (внутренний), но можно использовать любой бесплатный порт.
Проверьте файл requirements.txt, чтобы убедиться, что он содержит gunicorn.
Flask==3.1.0
gunicorn
Настройка Gunicorn
Вы можете настроить Gunicorn с помощью файла gunicorn.conf.py . Если файл gunicorn.conf.py находится в том же каталоге, где выполняется gunicorn, то вам не нужно указывать его местоположение в инструкции ENTRYPOINT или CMD файла Dockerfile. Дополнительные сведения об указании файла конфигурации см. в разделе "Параметры Gunicorn".
В этом руководстве предлагаемый файл конфигурации настраивает Gunicorn для увеличения числа рабочих ролей на основе количества доступных ядер ЦП. Дополнительные сведения о параметрах файла gunicorn.conf.py см. в разделе "Конфигурация Gunicorn".
# Gunicorn configuration file
import multiprocessing
max_requests = 1000
max_requests_jitter = 50
log_file = "-"
bind = "0.0.0.0:50505"
workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers
timeout = 120
Добавьте файл dockerignore, чтобы исключить ненужные файлы из образа.
.git*
**/*.pyc
.venv/
Сборка и запуск образа локально
Создайте образ локально.
Локально запустите образ в контейнере Docker.
docker run --detach --publish 5000:50505 flask-demo
Откройте http://localhost:5000 в браузере, чтобы увидеть веб-приложение, работающее локально.
Параметр --detach запускает контейнер в фоновом режиме. Параметр --publish сопоставляет порт контейнера с портом на узле. Порт узла (внешний) первый в паре, и порт контейнера (внутренний) второй. Для получения дополнительной информации см. справочник по команде Docker run.
Развертывание веб-приложения в Azure
Чтобы развернуть образ Docker в Azure Container Apps, используйте команду az containerapp up. (Для оболочки Bash показаны следующие команды. Измените символ продолжения (\) в соответствии с другими оболочками.)
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Когда развертывание завершится, у вас есть группа ресурсов со следующими ресурсами внутри него:
- Azure Container Registry
- Среда для контейнерных приложений
- Контейнерное приложение, использующее образ веб-приложения
- Рабочая область Log Analytics
Выходные данные az containerapp up команды включают URL-адрес развернутого приложения. Откройте URL-адрес в браузере, чтобы увидеть веб-приложение, работающее в Azure. URL-адрес выглядит следующим образом https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, где <generated-text> и <location-info> являются уникальными для развертывания.
Создание обновлений и повторное развертывание
После обновления кода выполните предыдущую az containerapp up команду еще раз. Команда перестроит образ и повторно развернет его в Azure Container Apps. При повторном выполнении команды он обнаруживает, что группа ресурсов и приложение уже существуют, и обновляет только приложение контейнера.
В более сложных сценариях обновления можно использовать команды az acr build и az containerapp update вместе, чтобы перезадеплоить и обновить приложение контейнера.
Очистка
Все ресурсы Azure, созданные в этом руководстве, находятся в одной группе ресурсов. При удалении группы ресурсов все ресурсы в группе ресурсов удаляются. Это самый быстрый способ удалить все Azure ресурсы, используемые для вашего приложения.
Чтобы удалить ресурсы, используйте команду az group delete .
Вы также можете удалить группу на портале
Дальнейшие шаги
Дополнительные сведения см. в следующих ресурсах: