Docker化Django+Nginx启动挂载异常:rac_backend模块找不到
Docker化Django环境的ModuleNotFound与静态文件路径问题解决方案
一、解决ModuleNotFoundError: No module named 'rac_backend'
- 检查
settings.py的INSTALLED_APPS配置,确认rac_backend被正确添加且拼写无误。 - 在Django服务的Dockerfile中设置Python路径:添加
ENV PYTHONPATH=/app(假设项目代码挂载在容器的/app目录),确保容器能识别模块路径。 - 确认
rac_backend目录下存在__init__.py文件(空文件即可,用于标记这是一个Python模块)。 - 验证
docker-compose.yml中Django服务的volumes配置,确保本地Rac/django目录正确挂载到容器内对应路径,示例:
进入容器执行volumes: - ./Rac/django:/appls /app,确认能看到rac_backend目录。
二、修复静态/媒体文件路径与自动生成空目录问题
- 修改
settings.py中的静态与媒体文件配置:
确保import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 静态文件配置 STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'files/static') STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'files/static'), ] # 媒体文件配置 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'files/media')BASE_DIR指向容器内的项目根目录,避免路径错误。 - 调整
docker-compose.yml的卷挂载,确保本地Rac/django/files目录挂载到容器内对应路径,避免自动生成空目录:
提前在本地创建volumes: - ./Rac/django:/appRac/django/files/static和Rac/django/files/media目录,并设置权限:chmod -R 755 Rac/django/files。 - 检查Nginx配置文件,确保静态/媒体文件的location指向正确路径:
location /static/ { alias /app/files/static/; } location /media/ { alias /app/files/media/; } - 清理旧容器与卷后重新构建启动:
docker-compose down -v docker-compose build --no-cache docker-compose up
三、恢复Django默认页面访问
- 确认
docker-compose.yml中Django服务的端口映射正确,例如:services: django: ports: - "8000:8000" - 检查Nginx的反向代理配置,确保指向Django服务:
其中location / { proxy_pass http://django:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }django是docker-compose.yml中Django服务的名称,确保Nginx能正常解析该服务地址。
内容的提问来源于stack exchange,提问作者NoSayMe
相关产品推荐
相关产品推荐

