fix: media-файлы django вне контейнера

This commit is contained in:
2026-01-16 16:13:46 +03:00
parent a47b3dfff5
commit b50a3202a8
5 changed files with 21 additions and 8 deletions

View File

@@ -19,7 +19,9 @@ npm-debug.log
# Django # Django
db.sqlite3 db.sqlite3
# Исключаем медиа, так как они должны быть внешними (volume)
media/ media/
public/media/
staticfiles/ staticfiles/
public/static/static_collected/ public/static/static_collected/
@@ -29,3 +31,7 @@ public/static/static_collected/
# Env # Env
.env .env
# ETPGRF Custom
public/static/codemirror/editor.js
frontend-assembly/dist/

View File

@@ -74,7 +74,7 @@ http {
} }
location /media/ { location /media/ {
alias /app/public/media/; alias /app/media/;
} }
} }
} }

View File

@@ -11,8 +11,8 @@ services:
- ./data:/app/data - ./data:/app/data
# Монтируем статику в именованный том, чтобы Nginx мог её читать # Монтируем статику в именованный том, чтобы Nginx мог её читать
- static_volume:/app/public/static_collected - static_volume:/app/public/static_collected
# Монтируем медиа (загружаемые файлы) в локальную папку на хосте # Монтируем медиа в /app/media (унификация путей)
- ./media:/app/public/media - ./media:/app/media
env_file: env_file:
- .env - .env
@@ -29,8 +29,8 @@ services:
volumes: volumes:
- ./config/nginx/etpgrf--internal-nginx.conf:/etc/nginx/nginx.conf:ro - ./config/nginx/etpgrf--internal-nginx.conf:/etc/nginx/nginx.conf:ro
- static_volume:/app/public/static_collected - static_volume:/app/public/static_collected
# Nginx тоже должен видеть медиа, чтобы раздавать их # Nginx тоже должен видеть медиа
- ./media:/app/public/media - ./media:/app/media
ports: ports:
- "8000:80" # Слушаем 8000 снаружи, проксируем на 80 внутри - "8000:80" # Слушаем 8000 снаружи, проксируем на 80 внутри
depends_on: depends_on:

View File

@@ -70,11 +70,11 @@ WSGI_APPLICATION = 'etpgrf_site.wsgi.application'
# Database # Database
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases # https://docs.djangoproject.com/en/6.0/ref/settings/#databases
# print(f"DEBUG: Database path is: {DB_PATH}") # <-- ОТЛАДКА
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.sqlite3',
# База данных лежит в папке data в корне проекта
'NAME': BASE_DIR.parent / 'data' / 'db-etpgrf.sqlite3', 'NAME': BASE_DIR.parent / 'data' / 'db-etpgrf.sqlite3',
} }
} }
@@ -121,7 +121,8 @@ STATICFILES_DIRS = [BASE_DIR.parent / 'public' / 'static']
# Убираем настройки WhiteNoise, так как в продакшене статику будет раздавать Nginx # Убираем настройки WhiteNoise, так как в продакшене статику будет раздавать Nginx
# STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage" # STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
MEDIA_ROOT = BASE_DIR.parent / 'public' / 'media' # Медиа файлы (загружаемые пользователем)
MEDIA_ROOT = BASE_DIR.parent / 'media'
MEDIA_URL = '/media/' MEDIA_URL = '/media/'
# Default primary key field type # Default primary key field type

View File

@@ -16,4 +16,10 @@ urlpatterns = [
] ]
if settings.DEBUG: if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) # urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
# runserver автоматически раздает статику из STATICFILES_DIRS,
# поэтому добавлять static(settings.STATIC_URL...) НЕ НУЖНО.
# Это только ломает путь, направляя его в STATIC_ROOT.
# А вот медиа runserver не раздает, поэтому это нужно:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)