Первое, что нужно понять, это то, что когда вы создаете монтирование тома из одного файла с вашего хоста в контейнер, вы по существу отображаете явный inode файла в контейнер. Многие редакторы, такие как vim или pycharm, используют файлы подкачки, которые копируют рабочие файлы поверх целевого файла, изменяя свой идентификатор inode. Для наиболее последовательных результатов рекомендуется следующее:
1: отключите «использовать безопасную запись» в редакторах, таких как vim или pycharm.
2: смонтировать целевой каталог вместо одного файла.
3: Установить переменную ENV: PYTHONUNBUFFERED = 1 (Это указывает Docker не буферизовать вывод из Python в стандартный выходной буфер)
4: установить сторожевой таймер Werkzeug. Это более эффективный прослушиватель на основе inotify, который будет запускаться при помощи колбы, если он установлен в системе.
докер-compose.yml
---
services:
flask:
image: domain/my-flask:latest
environment:
- PYTHONUNBUFFERED=1
- FLASK_ENV=development
- FLASK_DEBUG=1
volumes:
- ".:/app" #you can replace '.' with a full dir path
requirements.txt
watchdog==0.9.0
Werkzeug==0.15.2