Django: обслуживание статических файлов для производства

Я столкнулся с проблемой при обслуживании моих статических файлов в Django. Проблема существует только в производственной конфигурации, где я использую docker (docker-compose.yml) с файлами nginx (default.conf). После выполнения команды python manage.py collecstatic статические файлы помещаются в файл, определенный в STATIC_ROOT. Но это не те файлы, которые я создал для модификации моих шаблонов сайтов и административной панели. Как я видел, мои пользовательские стили и фотографии со шрифтами не попадают в папку STATIC_ROOT, указанную в файле settings.py. Ниже я привожу некоторые из наиболее важных фрагментов кода, относящихся к моей конфигурации для обслуживания статических файлов

settings.py

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

# SECURITY WARNING
DEBUG = False

INSTALLED_APPS = [
    'whitenoise.runserver_nostatic',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.conf',

    'rest_framework',
    'django_filters',
    'tinymce',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    "django.middleware.security.SecurityMiddleware",
    "whitenoise.middleware.WhiteNoiseMiddleware",
]

STATIC_URL = '/django_static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'django_static')

STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

urls.py

urlpatterns = i18n_patterns(
    path('panel/', admin.site.urls),
    path('tinymce/', include('tinymce.urls')),
)

urlpatterns += [
    re_path(r'^media/(?P<path>.*)$', serve,
            {'document_root': settings.MEDIA_ROOT}),
    re_path(r'^django_static/(?P<path>.*)$', serve,
            {'document_root': settings.STATIC_ROOT}),
]

django_static директория после команды python manage.py collectstatic

введите описание изображения здесь

default.conf

location /django_static/ {
        autoindex on;
        alias /app/backend/cdd/django_static/;
    }

docker-compose.yml

version: '3'

services:
    nginx:
        restart: unless-stopped
        build:
            context: .
            dockerfile: ./docker/nginx/Dockerfile
        ports:
            - 80:80
            - 443:443
        volumes:
            - static_volume:/app/backend/cdd/django_static
            - media_volume:/app/backend/cdd/media
            - ./docker/nginx:/etc/nginx/conf.d
        depends_on:
            - backend
    backend:
        restart: unless-stopped
        build:
            context: .
            dockerfile: ./docker/backend/Dockerfile
        volumes:
            - static_volume:/app/backend/cdd/django_static
            - media_volume:/app/backend/cdd/media
            - /etc/config.json:/etc/config.json
        expose:
            - 8000

volumes:
    static_volume: {}
    media_volume: {}

Вернуться на верх