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

使用Docker-Compose部署Django时静态文件无法加载的问题

Django + Docker-Compose 本地部署静态文件加载失败解决方案

问题根源分析

你当前的配置存在几个关键错误:

  1. STATIC_URL 配置错误:它应该是浏览器访问的URL路径,而非本地文件系统路径
  2. STATIC_ROOT 与Docker卷映射不匹配,导致静态文件收集后无法被正确访问
  3. 生产环境配置(production settings)下,Django内置runserver默认不会提供静态文件服务

步骤1:修正Django静态文件配置

修改proteas2/settings/production.py中的静态文件相关配置:

import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

# 静态文件URL路径(浏览器访问用)
STATIC_URL = '/static/'

# 静态文件收集后的存放目录(容器内路径,要和Docker卷映射对应)
STATIC_ROOT = '/static/'

# 如果你的项目根目录下有自定义static文件夹(非app内的static),添加以下配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

# 生产环境保持DEBUG=False,配合runserver --insecure参数即可提供静态文件
DEBUG = False

步骤2:调整Docker-Compose启动命令

修改docker-compose.yml中app服务的command,在等待数据库后启动runserver并添加--insecure参数(强制runserver在DEBUG=False时提供静态文件):

services:
  app:
    # ... 其他配置不变 ...
    command: bash -c "./wait-for-mysql.sh mysqldb && python manage.py runserver 0.0.0.0:8000 --insecure"

步骤3:重新收集静态文件

在容器内执行collectstatic命令,确保静态文件被收集到STATIC_ROOT指定的目录:

docker-compose exec app python manage.py collectstatic --noinput

步骤4:重启服务

docker-compose down && docker-compose up --build

现在访问http://localhost:8000应该能正常加载静态文件了。

内容的提问来源于stack exchange,提问作者Vangelis Sugar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:18