Django css не рендерится в процессе производства

В моем приложении Django5 все работает нормально при разработке под управлением venv, но как только я загружаю приложение в контейнер Docker с Debug=False, мне кажется, что мой CSS не отображается должным образом. Что действительно странно, так это то, что загрузка CSS кажется правильной, я просто не получаю свое пользовательское изображение героя css и цвета, и css администратора также не работает. Я использую gunicorn, а nginx обслуживает статические данные. Я вижу свой значок.ico, который подается из той же папки /static/ и css, js и т.д. все папки существуют в контейнере nginx, как и ожидалось. Я просматриваю исходники и нажимаю на ссылки, и все они там есть.

В Django settings.py У меня есть:

from pathlib import Path
import os
import environ

env = environ.Env(
    DEBUG=(bool, False)
)
BASE_DIR = Path(__file__).resolve().parent.parent
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')
ALLOWED_HOSTS = ['*']
.
.
.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Изменение STATIC_ROOT на фактический путь к контейнеру '/usr/share/nginx/html/static/' не изменило поведение.

В моем корневом каталоге urls.py:

urlpatterns = [
    path("admin/", admin.site.urls),
.
.
.
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Мой файл dockerfile-compose.yaml включает в себя collectstatic:

web:
    build: 
        context: .
        dockerfile: Dockerfile
    command: >
      sh -c "python manage.py collectstatic --noinput 
      && python manage.py migrate 
      && supervisord -c /etc/supervisor/conf.d/supervisord.conf"
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
      - rabbitmq
    environment:
      - DATABASE_URL=postgres://mysite:fakepassword@db:5432/mysite
      - CELERY_BROKER_URL=amqp://guest@rabbitmq//

Мой файл Dockerfile.nginx включает в себя копирование статических данных в папку в его (отдельном) контейнере:

# Use the official Nginx image from the Docker Hub
FROM nginx:latest

# Copy the Nginx configuration file to the container
COPY nginx.conf /etc/nginx/nginx.conf

# Copy the SSL certificates to the container
COPY certificate.crt.pem /etc/nginx/ssl/certificate.pem
COPY certificate.key.pem /etc/nginx/ssl/private_key.pem

# Copy the static files from the Django container
COPY staticfiles /usr/share/nginx/html/static
COPY media /usr/share/nginx/html/media

# Expose port 443 for HTTPS
EXPOSE 443

В контейнере nginx (URL сайта заменен на мой сайт) Я вижу:

nginx-1     | 172.18.0.1 - - [18/Feb/2025:20:39:49 +0000] "GET / HTTP/1.1" 200 6030 "https://mysite/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
nginx-1     | 172.18.0.1 - - [18/Feb/2025:20:39:49 +0000] "GET /static/css/styles.css HTTP/1.1" 304 0 "mysite" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
nginx-1     | 172.18.0.1 - - [18/Feb/2025:20:39:59 +0000] "GET / HTTP/1.1" 200 6030 "https://mysite/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
nginx-1     | 172.18.0.1 - - [18/Feb/2025:20:39:59 +0000] "GET /static/css/styles.css HTTP/1.1" 200 2269 "https://mysite/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
nginx-1     | 172.18.0.1 - - [18/Feb/2025:20:39:59 +0000] "GET /static/images/favicon.ico HTTP/1.1" 200 5879 "https://mysite/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
nginx-1     | 172.18.0.1 - - [18/Feb/2025:20:39:59 +0000] "GET /static/images/favicon.ico HTTP/1.1" 200 5879 "https://mysite/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"

Итак, я, похоже, получаю 200 баллов по моим фактическим css-файлам, но они не отображаются в моей программе. Ни один из css-файлов администратора не отображается, но они загружаются. Я в тупике, буду признателен за любую помощь, спасибо!

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