Рубрики
Без рубрики

Написание докера для приложения для флэкса

Flask – это веб-каркас Python, который используется для разработки веб-приложений. В этом посте мы попробуем … Tagged с Docker, Dockerfile, колбой, Python.

Flask – это веб-каркас Python, который используется для разработки веб-приложений. В этом посте мы постараемся развернуть веб-приложение на нашей машине, используя Docker Container.

Контейнерное содержание приложения – это упаковка приложения и его требований, так что его можно использовать для развертывания в любой машине на ходу. Мы создадим Docker Image Web-App, используя Dockerfile, а затем запускаем контейнер Docker для доступа к веб-приложению в нашем браузере.

Начиная

Мы будем использовать приложение Basic Flask, созданное Минди Макадамс Отказ Github Repo URL: https://github.com/macloo/basic-flask-app.

Клонировать репо в машине https://github.com/macloo/basic-flask-app Использование команды ниже:

git clone https://github.com/macloo/basic-flask-app

Я надеюсь, что Docker уже установлен в вашей системе, но если он не установлен, то, последуйте шаги, указанные в Установите Docker Engine

Теперь все настроено. Мы начнем писать Dockerfile для приложения колбы.

Контейнерное приложение для колбы

Теперь мы создадим DockerFile для приложения для колбы, которое будет использоваться для создания изображения приложения.

Следуйте инструкциям ниже, чтобы создать DockerFile:

1) клонировать github repo, если не сделано. 2) Измените каталог на Basic-Flask-App/и создать файл под названием Dockerfile.

cd basic-flask-app/
touch Dockerfile

3) Используйте свой любимый редактор, редактировать Dockerfile и вставьте следующее:

ARG APP_IMAGE=python:3.6.1-alpine

FROM $APP_IMAGE AS base

FROM base as builder

RUN mkdir /install
WORKDIR /install

COPY requirements.txt /requirements.txt

RUN pip install --install-option="--prefix=/install" -r /requirements.txt

FROM base
ENV FLASK_APP routes.py
WORKDIR /project
COPY --from=builder /install /usr/local
ADD . /project

ENTRYPOINT ["python", "-m", "flask", "run", "--host=0.0.0.0"]

Разбие докера

Давайте посмотрим на каждую строку Dockerfile.

ARG APP_IMAGE=python:3.6.1-alpine

Arg Также известны как переменные время в области сборки I.e. Они могут быть установлены во время сборки изображения с --build-arg. И вы не можете получить доступ к ним, как только изображение будет построено. Здесь мы берем переменную App_image дать базовое имя изображения. Значение по умолчанию: Python: 3.6.1-Alpine

FROM $APP_IMAGE AS base

Мы используем концепцию многоступенчатых сборки для оптимизации размера изображения докера. Подробнее о многоступенчатых сборках в здесь Отказ Здесь От Инициализирует сцену сборки и устанавливает базовое изображение.

FROM base as builder

Здесь мы устанавливаем имя псевдонима строитель для базового изображения. На этом изображении мы только устанавливаем пакеты зависимостей.

RUN mkdir /install

Беги Используется для запуска определенной команды, и она создает записью для записи контейнера. Здесь мы запускаем команду для создания каталога, называемого Установить Отказ Таким образом, имя строитель

WORKDIR /install

Workdir Настройка рабочего каталога контейнера Docker в любой момент времени. Любая команда прогона, CMD, Add, Copy или Entrypoint будет выполнена в указанном рабочем каталоге. Здесь мы делаем установить каталог как рабочий каталог.

COPY requirements.txt /requirements.txt

Скопировать Поскольку имя предлагается для копирования файла из текущего каталога вашего клиента Docker. Здесь мы копируем файл требования

RUN pip install --install-option="--prefix=/install" -r /requirements.txt

Здесь мы используем Пип Чтобы установить все пакеты, необходимые для создания приложения Flask. Пакеты упоминаются в требования .txt файл.

FROM base

Опять же, теперь после установки необходимых пакетов мы сейчас принимаем одно и то же изображение (используемое выше) в качестве базового изображения.

ENV FLASK_APP routes.py

Чтобы запустить приложение для колбы, либо нам нужно использовать колбу команда или питона Переключиться с колбой. Но до этого нам нужно экспортировать переменную под названием Flask_app Чтобы указать, как загрузить приложение.

Примечание: Это начнет разработчик веб-сервера. Но для развертывания производства вам нужно использовать готовый веб-сервер, как uwsgi.

WORKDIR /project

Мы устанавливаем проект каталог как рабочий каталог.

COPY --from=builder /install /usr/local

Мы копируем все установленные удаленные двоичные пакеты, установленные на более позднем базовом изображении на путь /usr/local в текущем базовом изображении.

ADD . /project

Добавить Команда также используется для копирования файлов/каталогов, а также он также, копирует и извлечь сжатый файл автоматически. Здесь мы копируем файлы/каталоги из текущего локального каталога в контейнер Проект каталог.

ENTRYPOINT ["python", "-m", "flask", "run", "--host=0.0.0.0"]

Выходная точка Чтобы идентифицировать, какой исполняемый файл должен выполняться, когда контейнер запускается с вашего изображения. Здесь мы запустим приложение Flask, используя Python’s и --host = 0,0.0.0 сделает сервер публично доступен.

Запуск контейнера Docker

У нас есть DockerFile, созданный в разделе выше. Теперь мы будем использовать DockerFile, чтобы создать изображение приложения Flask, а затем запустить контейнер приложения Flask.

Выполните следующие шаги для запуска контейнера:

1) Создание образа докера, используя Docker Build команда.

docker build -t basic-flask:latest --build-arg APP_IMAGE=python:3.9.5-alpine -f Dockerfile .

Вышеуказанная команда построит изображение с тегом Basic-Flask: последние Отказ Мы дали --build-arg Возможность упомянуть имя базового изображения для использования в сборке изображения.

Примечание: Если мы используем опцию --build-arg в Docker Build Команда, она перезапишет значение по умолчанию переменной, используемую в DockerFile. Но мы бежим Docker Build Команда без использования опции --build-arg. Это примет значение по умолчанию.

2) После успешной работы команды запустите команду ниже:

docker images

Эта команда будет перечислять все изображения Docker, и вы также можете увидеть изображение Basic-Flask: последние в списке.

3) Теперь запустите команду ниже, чтобы запустить контейнер из сборки изображения на шаге 2.

docker container run -p 5000:5000 -dit --name flaskApp basic-flask:latest

Эта команда запускает приложение в порту 5000 Отказ Используемые различные опции:

  • : Опубликуйте порт контейнера к порту хоста.
  • -d : Запустите контейнер на заднем плане.
  • : Запустите контейнер в интерактивном режиме.
  • -t : выделить псевдо-тты.
  • --name : Имя контейнера

4) Проверьте состояние контейнера Docker, используя команду:

docker container ps

Вы можете увидеть, что ваш контейнер в Бег Режим с несколькими другими деталями.

Попробуйте получить доступ к приложению Flask из вашего браузера. Посетите URL http://localhost: 5000/ и проверить вывод:

Попробуйте вышеуказанный пример, и, пожалуйста, дайте мне знать в комментариях, если у вас есть какие-либо сомнения или иметь лучшую форму Dockerfile построить приложение Flask.

Оригинал: “https://dev.to/souravatta/writing-a-dockerfile-for-flask-app-2g1n”