You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django5 Docker部署生产环境CSS无法正常渲染问题求助

Django5 Docker部署生产环境CSS无法正常渲染问题求助

大家好,我遇到一个特别诡异的问题:我的Django5应用在本地venv开发环境下一切正常,但部署到Docker容器且设置DEBUG=False后,CSS完全无法正常渲染。更奇怪的是,CSS的加载请求看起来都是成功的——自定义CSS里的英雄图、颜色都不生效,连后台管理的CSS也崩了。我用gunicorn搭配Nginx托管静态文件,/static/目录下的favicon.ico能正常显示,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 = '/usr/share/nginx/html/static/'

项目根urls.py配置

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

docker-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已替换为mysite)

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"

从日志里能看到CSS文件都是200或304的状态码,但样式就是不生效,后台的CSS也是加载了但没渲染。实在没头绪了,有没有大佬能指点一下?

备注:内容来源于stack exchange,提问作者openastronomer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:30:27