Контейнеризация — это потрясающая функция, которая позволяет разработчикам упаковывать приложение вместе с необходимыми зависимостями в один модуль. Затем мы можем переместить контейнер и развернуть приложение в разных средах, не беспокоясь о совместимости.
Что такое фляга?
Flask — это минималистичный и легкий микровеб-фреймворк для Python. Он предоставляет основные функции и библиотеки, необходимые для создания легкого веб-приложения с использованием языка Python.
Flask следует интерфейсу шлюза веб-сервера или стандарту WSGI, который позволяет нам сочетать минималистичный дизайн с гибким шаблоном, который может обрабатывать HTTP-запросы и другие функции. Например, Flask поддерживает такие веб-функции, как маршрутизация, базы данных и многое другое.
Предпосылки:
Чтобы следовать коду и командам, представленным в этом руководстве, убедитесь, что у вас есть следующие инструменты:
- Установленный интерпретатор Python на вашем компьютере (рекомендуется версия 3.11 и выше)
- Установленный движок Docker на хост-компьютере (рекомендуется версия 23 и выше).
- Текстовый редактор или IDE по вашему выбору.
При соблюдении данных требований мы можем продолжить работу с этим руководством.
Создайте приложение Flask
Как вы можете догадаться, первым шагом является создание приложения Python, которое мы хотим поместить в контейнер. В нашем случае мы продемонстрируем это с помощью минималистичного приложения, которое печатает «привет, мир».
Создайте новый каталог для хранения исходного кода вашего проекта и создайте файл Python с именем «app.py».
Отредактируйте «app.py» с помощью вашего любимого текстового редактора или IDE и добавьте код для своего приложения следующим образом:
от колба Импортировать Колбаприложение '=' Колба ( __имя__ )
@ приложение. маршрут ( '/' )
защита Привет, мир ( ) :
возвращаться '
Привет, мир!
'
Создать Docker-файл
Далее нам нужно определить инструкции, которые позволят нам упаковать приложение в виде образа Docker. Мы используем Dockerfile, который содержит все инструкции и инструменты для настройки образа.
В том же каталоге, что и «hello.py», создайте новый файл с именем «Dockerfile» без расширения. Выполните следующую команду:
$ коснитесь DockerfileОтредактируйте файл и добавьте следующий код:
Используйте официальный образ Python в качестве базового.
ИЗ питона: 3.12 -rc-slimРАБОЧИЙ ПАРАМЕТР/приложение
КОПИРОВАТЬ. /приложение
# Установить колбу
RUN pip install --no-cache- ты -р требования. текст
# Открыть порт 5000 для приложения Flask
РАЗОБЛАЧАТЬ 5000
# запускаем приложение Flask
КМД [ 'питон' , 'app.py' ]
Предыдущий Dockerfile выполняет следующие операции:
- В качестве базового образа используется официальный тонкий образ Python 3.12.
- Устанавливает рабочий каталог внутри контейнера «/app».
- Копирует содержимое каталога проекта в контейнер.
- Устанавливает Flask и любые другие зависимости, запустив «pip install» с использованием файла «requirements.txt».
- Предоставляет порт 5000 для приложения Flask.
- Определяет команду для запуска приложения Flask.
Убедитесь, что файл «requirements.txt» существует в каталоге проекта, и добавьте содержимое файла, как показано ниже:
Колба == 2.3.3В этом случае мы указываем, что хотим установить Flask версии 2.3.3.
Создайте образ Docker
Теперь, когда у нас есть готовое приложение Flask и Dockerfile, мы можем продолжить сборку образа с помощью следующей команды:
docker build -t flask-docker-app.Прежде чем запускать предыдущую команду, убедитесь, что вы находитесь в каталоге проекта. Вы можете заменить flask-docker-app именем, которое вы хотите присвоить своему изображению.
Запустите Docker-контейнер
Создав образ Docker, мы можем запустить контейнер на его основе с помощью команды «docker run» следующим образом:
докер запустить -p 5000 : 5000 колба-докер-приложениеЭто должно создать контейнер и сопоставить порт 5000 из контейнера с портом 5000 в хост-системе.
После выполнения откройте браузер и перейдите к http://localhost:5000 .
Вы должны увидеть надпись «Hello, World!» сообщение из приложения Flask.
Заключение
В этом руководстве вы узнали, как контейнеризировать простое приложение Python Flask с помощью Docker.