У меня есть приложение Flask + Gunicorn, оно находится в контейнере docker. Есть Nginx, который тоже находится в отдельном контейнере. Требуется чтобы Nginx обслуживал статические файлы, в том числе файл js, которые находятся в папке static. Соотвественно для этого два контейнера должны иметь общий volume.
Когда я только создаю volume и запускаю контейнеры, никаких проблем нет, все актуальные файлы js попадают в volume. Однако если обновить образ контейнера и затем перезапустить, файлы js остаются без изменения.
Проблема не связана с Ngnix, так как пока не выбрал опцию обслуживания статических файлов, только обычные запросы.
Я сейчас решаю эту проблему так:
1. Останавливаю и удаляю контейнер, который использует volume
docker rm -f
2. Удаляю volume
docker volume rm flask_static_files_volume_name
3. Создаю volume заново
docker volume create flask_static_files_volume_name
4. Запускаю контйенер
docker run -v ... appname_container_image
После этих действий аткуальные файлы js появляются.
У меня есть мнение, что код проекта не должен попадать в volume и поведение docker в данном случае корретное, так как volume и нужны в том числе и для того, чтобы файлы не терялись/изменялись при перезапуске контейнера.
Делал это изначально не я, но меня попросили разобраться, почему js файлы не обновляются. Настройка была скорее всего сделана на базе вот этого туториал, где прикрепляют папку static к volume:
ссылка
Прошу поделиться мнением, прав ли я, что папки с js файлами проекта не должны быть volume.