Запуск Flask-приложения в рабочем (production) режиме
При запуске Flask-приложения в рабочей среде важно использовать готовый к эксплуатации веб-сервер вместо встроенного сервер разработки. В этом разделе мы узнаем, как запустить Flask-приложение в рабочем режиме с использованием Docker.
Выбор сервера для рабочей среды
Существует несколько веб-серверов, готовых к использованию в рабочей среде, которые можно использовать для запуска Flask-приложения, таких как Gunicorn, uWSGI и Waitress. В этом примере мы будем использовать Gunicorn, популярный и широко используемый веб-сервер для Python-приложений.
Изменение файла Dockerfile
Для запуска Flask-приложения в рабочем режиме с использованием Gunicorn нам нужно обновить файл Dockerfile. Замените содержимое файла Dockerfile
следующим:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN pip install gunicorn
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
Основные изменения:
- Мы добавили
RUN pip install gunicorn
для установки веб-сервера Gunicorn.
- Мы изменили инструкцию
CMD
для запуска Flask-приложения с использованием Gunicorn. Команда "gunicorn", "--bind", "0.0.0.0:5000", "app:app"
сообщает Gunicorn привязать приложение к адресу 0.0.0.0:5000
и использовать объект app
из файла app.py
в качестве WSGI-приложения.
Сборка и запуск Docker-контейнера для рабочей среды
Теперь давайте соберем Docker-образ и запустим контейнер в рабочем режиме:
- Соберите Docker-образ:
docker build -t labex-flask-app-prod .
- Запустите Docker-контейнер:
docker run -p 5000:5000 labex-flask-app-prod
Теперь приложение должно запускаться в рабочем режиме с использованием Gunicorn.
Проверка настройки рабочей среды
Для проверки того, что Flask-приложение запущено в рабочем режиме, вы можете использовать следующую команду для просмотра журналов:
docker logs <container_id>
Вы должны увидеть вывод, похожий на следующий:
[2023-04-11 12:34:56 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2023-04-11 12:34:56 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2023-04-11 12:34:56 +0000] [1] [INFO] Using worker: sync
[2023-04-11 12:34:56 +0000] [8] [INFO] Booting worker with pid: 8
Это подтверждает, что Flask-приложение запущено в рабочем режиме с использованием веб-сервера Gunicorn.