Этот пример демострирует заворачивание Flask-приложения в Docker-контейнер, а также демонстрирует удобную структуру папок.
Особенности:
- использование nginx и gunicorn
- использование supervisor для запуска nginx и gunicorn
- использование SSL в nginx (в папке certs уже находятся готовые самоподписанные сертификаты)
- один из роутов Flask-приложения показывает переменные среды ОС (для примера выбраны переменные для задания прокси для pip)
Для работоспособности одного из роутов, приложению нужно передать переменные среды. Если переменные среды содержат секретную информацию, то надежнее передавать их через файл, например envs.txt. Если передавать через командную строку, то нужно будет потом очищать историю команд. Внимание!!! Необходимо самому создать файл с переменными среды
docker build -t flask_app .
docker run --name flask_app -d -p 5000:5000 -v /home/adam/my_project/certs:/my_test_app/certs --env-file=envs.txt flask_app
После запуска Docker-контейнера, приложение будет доступно по адресу https://<domain_name>:5000/. Переменные среды можно посмотреть по адресу https://<domain_name>:5000/env