diff --git a/.gitignore b/.gitignore index beee253..b6b6ad4 100644 --- a/.gitignore +++ b/.gitignore @@ -255,3 +255,9 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. .idea/ +# Static / Media +# public/static/ # Исходники статики нужны collectstatic +# public/media # Медиа файлы НЕ нужны в образе, они монтируются как volume +# Мы игнорируем содержимое папки public/media, но оставляем саму папку и README.md +public/media/* +!public/media/README.md diff --git a/public/media/README.md b/public/media/README.md new file mode 100644 index 0000000..53186cf --- /dev/null +++ b/public/media/README.md @@ -0,0 +1,27 @@ +# Папка для медиа-файлов (Media) + +Эта директория предназначена для хранения загружаемого контента (изображений, документов), который генерируется или загружается пользователями в процессе работы Django-приложения. + +## Как это работает с Docker + +В `docker-compose.prod.yml` настроено монтирование этой папки как Docker Volume: + +```yaml +volumes: + - ./media:/app/public/media +``` + +* **На хосте (сервере):** Файлы физически хранятся в папке `media` рядом с `docker-compose.yml`. +* **В контейнере:** Django видит их по пути `/app/public/media` (настройка `MEDIA_ROOT`). +* **Nginx:** Внешний Nginx настроен на прямую отдачу файлов из этой папки хоста, минуя Django. + +## Содержимое репозитория + +В репозитории эта папка содержит только этот `README.md`. +При развертывании контейнера через docker-compose (с volume `./media:/app/public/media`), содержимое этой папки на хосте становится доступным приложению. + +**Автоматически создаваемые файлы:** +При старте контейнера в этой папке автоматически создается каталог `errors/`, куда копируются статические HTML-файлы для отображения ошибок (404.html, 500.html), чтобы внешний Nginx мог их отдавать, даже если Django, gunicorn или весь контейнер недоступен. + +> **Важно:** Убедитесь, что у пользователя, под которым работает Nginx (обычно `www-data`), есть права на чтение этой директории и файлов в ней. +