Передача локальных файлов в контейнер docker - docker COPY не обновляется с новыми файлами в каталоге

Я размещаю свои медиа-файлы на том же сервере, на котором размещено мое приложение Django. Время от времени мне нужно добавлять дополнительные файлы, которые будут обслуживаться приложением, например, изображения.

Я настроил так, чтобы NGINX обслуживал все мои медиафайлы в директории под названием /mediafiles внутри моего контейнера docker, это то же самое место, где будут находиться все изображения, загруженные пользователем.

Я хочу добавить несколько файлов в репо, скопировать эти файлы в /mediafiles в контейнере и иметь возможность доступа к ним через приложение (при локальном запуске) или NGINX (при запуске на моем сервере).

Однако я столкнулся с некоторыми проблемами. Я пробовал использовать следующую строку в моем Dockerfile:

COPY ./reponame/mediafiles $APP_HOME/mediafiles

Который работает, но ТОЛЬКО после того, как я выполнил:

docker system prune --volumes 

Что я не могу сделать на сервере, потому что именно здесь будут располагаться все загруженные пользователями изображения. Я знаю, что это не оптимальный вариант, так как вы должны использовать внешнее файловое хранилище для пользовательских медиа, но это то, что я могу потратить на мой проект в данный момент, и я не нашел хорошего решения для хранения менее $10 в месяц.

Я пробовал выполнять следующие команды, чтобы не делать полное обрезание системы, но безуспешно - Docker не распознает добавленные/удаленные файлы локально для обновления контейнера.

docker-compose up --build --force-recreate
docker-compose build --no-cache   
docker-compose up  --build
docker builder prune  

Я также думал о монтировании моих локальных "медиафайлов" в контейнер в файле docker-compose, но это не работает и не рекомендуется, насколько я понимаю, из-за конфликта перезаписи файлов в контейнере, т.е. примерно так:

- ./reponame/mediafiles:/home/kontorshund/web/mediafiles

Так что у меня немного нет идей, как двигаться дальше в решении проблемы, буду очень признателен тому, кто лучше разбирается в механизмах Docker, как решить эту проблему.

Оки, не обращайте внимания. Теперь, когда я пробую следующее, все работает нормально, не знаю, что я сделал неправильно в первый раз....,

version: '3.8'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/home/reponame/web
      - static_volume:/home/reponame/web/staticfiles
      - ./mediafiles:/home/reponame/web/mediafiles
      #- media_volume:/home/reponame/web/mediafiles
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev

volumes:
  static_volume:
  media_volume:
Вернуться на верх