Если вы новичок в Docker и контейнерах, изучение развёртывания приложения Python Flask в Docker – отличный способ начать. Docker позволяет контейнеризировать приложения с лёгкой технологией и обеспечивает безопасность для быстрого развёртывания приложений.
В этом руководстве вы научитесь быть своим собственным мастером в установке и развёртывании приложений Python Flask API в контейнерах Docker.
Приготовьтесь и начните развёртывание!
Предварительные условия
Если вы хотите идти пошагово, вам понадобится следующее:
- Установленная машина Ubuntu с установленным Docker. В этом руководстве используется Ubuntu 18.04.5 LTS с Docker v19.03.8.
- Установленный Python v3.9 или более поздней версии на машине Ubuntu. В этом руководстве используется Python v3.9.2 на машине Ubuntu.
- Пакет Elinks установлен на машине Ubuntu, используемой для тестирования API в этом руководстве.
Создание приложения Python Flask API (GET и POST API)
Начните этот учебник с создания приложения Python Flask. Flask – это легкий микрофреймворк веб-приложений, написанный на Python, который поддерживает WSGI. Flask предоставляет удобные инструменты и функции для создания веб-приложений на Python.
Перед созданием приложения Python Flask вы установите Python Flask и виртуальное окружение Python, в котором Flask будет выполнять приложение.
1. Войдите в свою машину Ubuntu, используя ваш любимый SSH-клиент.
2. Затем выполните следующие команды, чтобы создать каталог с именем ~/docker_python_flask_demo и переключиться на него. Этот каталог будет содержать все файлы, необходимые Python и Docker для запуска приложения.
3. Выполните команду pip
ниже, чтобы установить
виртуальное окружение Python (virtualenv
), необходимое Flask для выполнения приложений. Виртуальное окружение Python предлагает свой собственный двоичный файл Python и установленные пакеты для каждого приложения, чтобы избежать конфликтов с другими приложениями.

4. Выполните команду virtualenv
ниже, чтобы создать и активировать виртуальное окружение с использованием модуля venv
.

5. Теперь выполните следующую команду для установки пакета Python flask
с помощью менеджера пакетов pip
.
6. Выполните следующую команду для активации пакетов в вашем виртуальном окружении перед тем, как начать устанавливать или использовать их. Это изменяет переменную окружения VIRTUAL_ENV
, чтобы указать на ваше виртуальное окружение, и добавляет бинарный файл Python из виртуального окружения в путь, чтобы вы запускали правильный бинарный файл.
7. Создайте еще один файл с именем requirements.txt и определите зависимость Flask-приложения, как показано ниже.
8. Создайте текстовый файл ~/docker_python_flask_demo/app.py и заполните файл следующим Python-кодом.
Нижеприведенный Python-код импортирует класс flask
и создает экземпляр класса с именем app
. Экземпляр класса app
содержит две функции login()
, выполняемые при отправке пользователем запросов на страницу /login
.
Затем выполняется функция success()
, отображая приветственное сообщение “name-of-the-user” в браузере.
9. Создайте еще один файл с именем ~/docker_python_flask_demo/form.html и скопируйте/вставьте нижеприведенный код.
Запуск HTML-кода ниже создает форму с двумя полями ввода: одно для предоставления вашего имени, а другое – для кнопки отправки.
Как только вы укажете имя пользователя и нажмете кнопку отправки, будет отправлен запрос POST, и Flask выполнит другую функцию, открыв новую веб-страницу по адресу http://localhost:5000/success/<username>.
10. Наконец, запустите команду Python
ниже, чтобы проверить работу приложения (app.py
) локально на вашей системе.
Как видно ниже, приложение успешно запущено на машине с Ubuntu, но не на Docker. Вы запустите то же приложение на Docker в следующих разделах.

Создание Dockerfile для развертывания приложения Python Flask API
Вы только что создали и проверили, что приложение Python Flask работает локально на вашей машине. Но перед развертыванием приложения на Docker вы сначала создадите Dockerfile, чтобы определить все наборы инструкций для сборки образа Docker.
Создайте файл с именем Dockerfile в каталоге ~/docker_python_flask_demo и скопируйте/вставьте содержимое ниже в Dockerfile.
Docker будет использовать этот Dockerfile для выполнения всех инструкций или команд, необходимых для создания нового образа Docker на основе базового образа (ubuntu:18.04
).
Теперь выполните команду tree
ниже, чтобы убедиться, что все необходимые файлы для запуска приложения Python Flask содержатся в рабочем каталоге (~/docker_python_flask_demo).

Создание образа Docker для приложения Python Flask API
Теперь у вас есть необходимые файлы для развертывания приложения Python Flask, но эти файлы ничего не сделают, пока вы не создадите образ. Вы выполните команду docker build
для создания образа Docker на основе инструкций, установленных в Dockerfile.
Запустите команду docker build
ниже, чтобы создать образ Docker в рабочем каталоге (.
). Эта команда помечает (-t
) образ как flask-image
версии 1 (:v1
).

Теперь выполните команду docker
ниже, чтобы просмотреть все доступные образы.
Ниже вы можете увидеть различные возвращаемые атрибуты, такие как REPOSITORY. Обратите внимание, что имя REPOSITORY – flask-image и помечено версией (v1), как показано ниже.

Запуск приложения Python Flask в контейнере Docker
После создания образа Docker вы можете запустить приложение Python Flask в контейнере Docker. Контейнер Docker упаковывает код и его зависимости для быстрого запуска приложений.
1. Выполните команду docker run
ниже, чтобы выполнить следующее:
- Запустите контейнер в режиме detached (
-d
), чтобы он работал как фоновый процесс и выводил вывод консоли при создании. - Отображает порт хоста Docker (
-p 5000:5000
) с портом контейнера. - Запускает контейнер Docker (
flask-image:v1
)
2. Далее выполните команду docker
ниже, чтобы перечислить все контейнеры в движке Docker. Проверьте, успешно ли Docker создал контейнер.

3. Наконец, выполните команду ниже, чтобы открыть веб-браузер на вашей машине Ubuntu с использованием elinks.
Команда открывает веб-браузер в терминале и запрашивает имя, как показано ниже.
Введите ваше имя и нажмите кнопку Отправить.

4. Как видно ниже, после нажатия кнопки Отправить, функция входа перенаправляется на функцию успешного выполнения в приложении Flask.

Заключение
Этот учебник направлен на то, чтобы помочь вам в процессе настройки контейнера Python Flask API Docker с использованием образов Docker. Вы также затронули вопрос запуска контейнеров Python Flask с использованием Dockerfiles, что позволяет редактировать и создавать настраиваемые контейнеры на ваш выбор.
Какие еще приложения вы планируете развернуть в контейнере Docker? Возможно, контейнер MongoDB для Docker?