Добавление Docker в ваш Python и Среда разработки Flask может сбивать с толку, когда вы только начинаете работать с контейнерами. Давайте быстро установить и настроить Docker для разработки веб-приложений Flask приложения в вашей локальной системе.
Наши инструменты
Это руководство написано для Python 3. Оно будет работать с Python 2, но я не тестировал его с версия 2.7, которая скоро будет исключена .
Docker для Mac необходим. Я рекомендую стабильную версию, если у вас нет явной цели для Edge канал.
В контейнере Docker мы будем использовать:
- Python 3, в частности
- версия slim-3.6.5
- из Docker Hub
- Версия Flask 1.0.2
Весь код для Dockerfile и приложения Flask доступен с открытым исходным кодом. под лицензией MIT на GitHub под каталог docker-flask-mac из примеры-кода-блога репозиторий. Используйте код в своих целях сколько угодно.
Установка Docker на macOS
Нам нужно установить Docker, прежде чем мы сможем запускать наши контейнеры Docker. если ты у вас уже установлен и работает Docker для Mac, смело переходите к следующий раздел.
На вашем Mac загрузите Docker Community Edition (CE) для Mac установщик.
Найдите недавно загруженную установку в Finder и дважды щелкните файл. Следуйте процессу установки, который включает в себя предоставление прав администратора. установщику.
После завершения установки откройте терминал. Проверьте установку Docker с помощью Флаг --version
:
docker --version
Если Docker установлен правильно, вы должны увидеть следующий вывод:
Docker version 18.03.1-ce, build 9ee9f40
Обратите внимание, что 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
.
Все работало, когда вы видите простой текстовый HTTP-ответ, например, показано выше на снимке экрана моего браузера Chrome.
Что дальше?
Мы только что установили Docker и настроили приложение Flask для работы внутри контейнер. Это только начало того, как вы можете интегрировать Docker в ваш рабочий процесс. Я настоятельно рекомендую прочитать Краткое руководство по Django с PostgreSQL который познакомит вас с Docker Swarm, а также с основным контейнером Docker служба.
Затем взгляните на Docker и страницы развертывания для получения дополнительных руководств.
Вопросов? Дайте мне знать через GitHub запрос на выпуск в репозитории Full Stack Python , в Твиттере @fullstackpython или @mattmakai .
Вы видите опечатку, проблему с синтаксисом или просто что-то непонятное в этом Сообщение блога? Вилка источник этой страницы на GitHub и отправьте запрос на перенос с исправлением или отправьте сообщение о проблеме на GitHub .