diff --git a/.dockerignore b/.dockerignore index a8522da..c46e3cb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -19,7 +19,9 @@ npm-debug.log # Django db.sqlite3 +# Исключаем медиа, так как они должны быть внешними (volume) media/ +public/media/ staticfiles/ public/static/static_collected/ @@ -29,3 +31,7 @@ public/static/static_collected/ # Env .env + +# ETPGRF Custom +public/static/codemirror/editor.js +frontend-assembly/dist/ diff --git a/config/nginx/etpgrf--internal-nginx.conf b/config/nginx/etpgrf--internal-nginx.conf index 0ecef96..ad6fa17 100644 --- a/config/nginx/etpgrf--internal-nginx.conf +++ b/config/nginx/etpgrf--internal-nginx.conf @@ -74,7 +74,7 @@ http { } location /media/ { - alias /app/public/media/; + alias /app/media/; } } } diff --git a/docker-compose.yml b/docker-compose.yml index 78e43e3..11803aa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,8 +11,8 @@ services: - ./data:/app/data # Монтируем статику в именованный том, чтобы Nginx мог её читать - static_volume:/app/public/static_collected - # Монтируем медиа (загружаемые файлы) в локальную папку на хосте - - ./media:/app/public/media + # Монтируем медиа в /app/media (унификация путей) + - ./media:/app/media env_file: - .env @@ -29,8 +29,8 @@ services: volumes: - ./config/nginx/etpgrf--internal-nginx.conf:/etc/nginx/nginx.conf:ro - static_volume:/app/public/static_collected - # Nginx тоже должен видеть медиа, чтобы раздавать их - - ./media:/app/public/media + # Nginx тоже должен видеть медиа + - ./media:/app/media ports: - "8000:80" # Слушаем 8000 снаружи, проксируем на 80 внутри depends_on: diff --git a/etpgrf_site/etpgrf_site/settings.py b/etpgrf_site/etpgrf_site/settings.py index 17e52b0..b69c2e1 100644 --- a/etpgrf_site/etpgrf_site/settings.py +++ b/etpgrf_site/etpgrf_site/settings.py @@ -70,11 +70,11 @@ WSGI_APPLICATION = 'etpgrf_site.wsgi.application' # Database # https://docs.djangoproject.com/en/6.0/ref/settings/#databases -# print(f"DEBUG: Database path is: {DB_PATH}") # <-- ОТЛАДКА DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', + # База данных лежит в папке data в корне проекта 'NAME': BASE_DIR.parent / 'data' / 'db-etpgrf.sqlite3', } } @@ -121,7 +121,8 @@ STATICFILES_DIRS = [BASE_DIR.parent / 'public' / 'static'] # Убираем настройки WhiteNoise, так как в продакшене статику будет раздавать Nginx # STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage" -MEDIA_ROOT = BASE_DIR.parent / 'public' / 'media' +# Медиа файлы (загружаемые пользователем) +MEDIA_ROOT = BASE_DIR.parent / 'media' MEDIA_URL = '/media/' # Default primary key field type diff --git a/etpgrf_site/etpgrf_site/urls.py b/etpgrf_site/etpgrf_site/urls.py index a56301d..b779b47 100644 --- a/etpgrf_site/etpgrf_site/urls.py +++ b/etpgrf_site/etpgrf_site/urls.py @@ -16,4 +16,10 @@ urlpatterns = [ ] 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)