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

Kubernetes环境下Gunicorn部署Django(DEBUG=False)时静态文件无法加载的问题求助

Kubernetes环境下Gunicorn部署Django(DEBUG=False)时静态文件无法加载的问题求助

问题描述

我现在在Kubernetes的Pod里用Gunicorn运行Django应用,当设置DEBUG=False时,静态文件(比如后台管理面板的CSS/JS)完全加载不出来。本地开发时用Django内置的runserver、DEBUG=True的状态下一切正常,但切换到生产模式后,所有静态文件请求都返回404错误。

错误日志

浏览器控制台和Django日志里都能看到类似的404记录:

GET /static/admin/css/base.efb520c4bb7c.css HTTP/1.1" 404 179
GET /static/admin/js/nav_sidebar.7605597ddf52.js HTTP/1.1" 404 179

相关Django配置(settings.py)

我当前的关键配置如下:

DEBUG = False

INSTALLED_APPS = [
    "django.contrib.staticfiles",
    # 其他应用...
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    # 其他中间件...
]


BASE_DIR = Path(__file__).resolve().parent.parent
STATIC_URL = '/static/'
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
STATICFILES_DIRS = [
    BASE_DIR / 'static',  
]
STATIC_ROOT = BASE_DIR / 'staticfiles'

应用启动方式(Docker Entrypoint脚本)

我的Docker启动脚本是这样的:

#!/bin/sh

APP_PORT=${PORT:-8000}

echo "Migrating database..."
/opt/venv/bin/python manage.py migrate --noinput

echo "Collecting static files..."
/opt/venv/bin/python manage.py collectstatic --noinput
echo "Static files collected"

echo "Starting server..."
/opt/venv/bin/gunicorn secureuri.wsgi:application --bind "0.0.0.0:${APP_PORT}" --workers 1 --access-logfile - --error-logfile - --log-level debug

我已经尝试过的方案

  • 确认了collectstatic命令确实在启动过程中执行了
  • 进入容器内执行ls -la staticfiles/admin/css/,能看到静态文件确实存在于容器中
  • 尝试用python manage.py runserver --insecure在DEBUG=False下启动内置服务器,问题依旧
  • 检查了Gunicorn的日志,服务运行正常,没有任何和静态文件相关的错误信息
  • 尝试调整Whitenoise的配置(在INSTALLED_APPS里添加whitenoise.runserver_nostatic,并调整中间件顺序),但还是没解决问题
  • 重启过Kubernetes Pod,静态文件仍然返回404

我的问题

  1. 不用Nginx、S3这类外部服务的前提下,怎么在DEBUG=False时正确提供静态文件?
  2. 是不是我的Gunicorn或者Kubernetes配置里有什么遗漏的地方?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:13:11