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

uWSGI+Docker部署Django时静态文件404的解决方法求助

解决Django+uWSGI+Docker部署中静态文件404的问题

以下是针对性的排查和修复方案:

1. 在Docker构建阶段执行collectstatic

你的Dockerfile未包含静态文件收集步骤,即便本地执行过collectstatic,也无法保证镜像内的static目录包含完整的静态资源(比如Django Admin的样式文件)。修改Dockerfile,在复制项目文件后添加收集命令:

# Copy project files
COPY . /app/

# 收集静态文件(--noinput跳过交互确认)
RUN python manage.py collectstatic --noinput

# Expose the port the app runs on
EXPOSE 8000

2. 验证uWSGI静态映射路径的一致性

  • 进入容器执行ls -l /app/static,确认目录下存在admin子目录及对应的css、js文件
  • 检查Django配置中的STATIC_URL,如果settings.py里STATIC_URL不是/static/,需同步修改uWSGI的static-map前缀。例如STATIC_URL = '/staticfiles/'时,uwsgi.ini要改成static-map = /staticfiles=/app/static

3. 调整uWSGI启动参数的加载顺序

uWSGI参数加载顺序会影响配置生效,建议将所有核心配置移到uwsgi.ini中,避免命令行参数和配置文件冲突:
修改uwsgi.ini:

[uwsgi]
http = 0.0.0.0:8000
module = yt_automation.wsgi:application
static-map = /static=/app/static
static-expires = /* 7776000
offload-threads = %k

然后Dockerfile的启动命令简化为:

CMD ["uwsgi", "--ini", "uwsgi.ini"]

4. 确认STATIC_ROOT路径准确性

进入容器执行python manage.py shell,运行以下代码验证路径:

import os
from django.conf import settings
print(settings.BASE_DIR)
print(settings.STATIC_ROOT)

确保输出的STATIC_ROOT为/app/static,与uWSGI配置的映射路径完全一致。

内容的提问来源于stack exchange,提问作者Akhil Garg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:47:05