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

Разработка приложений Flask в контейнерах Docker на macOS

Узнайте, как настроить и разработать новое веб-приложение Flask в контейнере Docker.

Автор оригинала: Matt Makai.

Добавление Docker в ваш Python и Среда разработки Flask может сбивать с толку, когда вы только начинаете работать с контейнерами. Давайте быстро установить и настроить Docker для разработки веб-приложений Flask приложения в вашей локальной системе.

Наши инструменты

Это руководство написано для Python 3. Оно будет работать с Python 2, но я не тестировал его с версия 2.7, которая скоро будет исключена .

Docker для Mac необходим. Я рекомендую стабильную версию, если у вас нет явной цели для Edge канал.

В контейнере Docker мы будем использовать:

Весь код для Dockerfile и приложения Flask доступен с открытым исходным кодом. под лицензией MIT на GitHub под каталог docker-flask-mac из примеры-кода-блога репозиторий. Используйте код в своих целях сколько угодно.

Установка Docker на macOS

Нам нужно установить Docker, прежде чем мы сможем запускать наши контейнеры Docker. если ты у вас уже установлен и работает Docker для Mac, смело переходите к следующий раздел.

На вашем Mac загрузите Docker Community Edition (CE) для Mac установщик.

Загрузите Docker Community Edition для Mac.

Найдите недавно загруженную установку в Finder и дважды щелкните файл. Следуйте процессу установки, который включает в себя предоставление прав администратора. установщику.

После завершения установки откройте терминал. Проверьте установку Docker с помощью Флаг --version :

docker --version

Если Docker установлен правильно, вы должны увидеть следующий вывод:

Docker version 18.03.1-ce, build 9ee9f40

Обратите внимание, что Docker запускается через системный агент, который вы можете найти в строке меню.

Агент Docker в строке меню.

Я обнаружил, что агент Docker отнимает драгоценное время автономной работы на моем Macbook Pro. Если я не занимаюсь разработкой и мне нужно максимально увеличить время работы от батареи, я закройте агент и снова запустите его, когда я буду готов писать код.

Теперь, когда Docker установлен, приступим к запуску контейнера и написанию наше приложение Flask.

Dockerfile

Docker должен знать, что мы хотим от контейнера, где Dockerfile входит.

# this is an official Python runtime, used as the parent image
FROM python:3.6.5-slim

# set the working directory in the container to /app
WORKDIR /app

# add the current directory to the container as /app
ADD . /app

# execute everyone's favorite pip command, pip install -r
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# unblock port 80 for the Flask app to run on
EXPOSE 80

# execute the Flask app
CMD ["python", "app.py"]

Сохраните Dockerfile, чтобы мы могли запустить нашу следующую команду с завершенным содержимое файла. В командной строке запустите:

docker build -t flaskdock .

В приведенном выше файле docker build используется флаг -t для пометки изображения имя flaskdock .

Если сборка прошла успешно, мы можем увидеть изображение с Команда docker image ls . Попробуйте сейчас:

docker image ls

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

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
flaskdock           latest              24045e0464af        2 minutes ago       165MB

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

Кодирование приложения Simple Flask

Пора составить супер-простое “Hello, World!” Веб-приложение Flask для тестирования запуск кода Python в нашем контейнере Docker. В рамках текущего В каталоге проекта создайте файл с именем app.py со следующим содержимым:

from flask import Flask, Response


app = Flask(__name__)


@app.route("/")
def hello():
    return Response("Hi from your Flask app running in your Docker container!")


if __name__ == "__main__":
    app.run("0.0.0.0", port=80, debug=True)

Вышеуказанные 7 строк кода (не считая пустых строк, совместимых с PEP8) в app.py позволить нашему приложению возвращать простое сообщение при запуске с Сервер разработки Flask.

Нам нужен еще один файл, чтобы указать нашу зависимость Flask . Создайте файл requirements.txt в том же каталоге, что и app.py :

flask==1.0.2

Убедитесь, что оба файла app.py и requirements.txt сохранены, затем мы можем попробовать код.

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

Теперь, когда у нас есть изображение вместе с кодом Python в файле мы можем запустить изображение как контейнер с помощью команды docker run . Выполнить следующую команду, не забудьте заменить абсолютный путь для том в свой каталог.

docker run -p 5000:80 --volume=/Users/matt/devel/py/flaskdocker:/app flaskdock

Если вы получили ошибку python: невозможно открыть файл app.py: [Errno 2] Нет такого файла или каталога , тогда вы, вероятно, забыли случайно /Users/matt/devel/py/flaskdocker на каталог, в котором находятся файлы вашего проекта, особенно app.py .

Приложение Flask отвечает на запросы из контейнера Docker.

Все работало, когда вы видите простой текстовый HTTP-ответ, например, показано выше на снимке экрана моего браузера Chrome.

Что дальше?

Мы только что установили Docker и настроили приложение Flask для работы внутри контейнер. Это только начало того, как вы можете интегрировать Docker в ваш рабочий процесс. Я настоятельно рекомендую прочитать Краткое руководство по Django с PostgreSQL который познакомит вас с Docker Swarm, а также с основным контейнером Docker служба.

Затем взгляните на Docker и страницы развертывания для получения дополнительных руководств.

Вопросов? Дайте мне знать через GitHub запрос на выпуск в репозитории Full Stack Python , в Твиттере @fullstackpython или @mattmakai .

Вы видите опечатку, проблему с синтаксисом или просто что-то непонятное в этом Сообщение блога? Вилка источник этой страницы на GitHub и отправьте запрос на перенос с исправлением или отправьте сообщение о проблеме на GitHub .