Docker部署Django应用报错:找不到django_ec2_complete模块
解决Docker运行Django容器时ModuleNotFoundError问题
常见排查与修复步骤
1. 核对项目结构与Dockerfile工作目录
先确认你的Django项目目录结构是否符合标准:
django-ec2-complete/ ├── django_ec2_complete/ # 核心项目模块(含settings.py、wsgi.py) │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── manage.py └── Dockerfile
Dockerfile中需正确指定工作目录并复制项目文件:
WORKDIR /app COPY . .
若COPY后文件路径不符,Python将无法定位模块。
2. 确认依赖已完整安装
确保Dockerfile中包含依赖安装步骤,比如从requirements.txt安装:
COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt
缺失Django或相关依赖会直接导致模块找不到。
3. 检查启动命令的模块指向
查看manage.py开头的环境变量设置:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_ec2_complete.settings')
这里的django_ec2_complete必须和你的实际项目模块名完全一致,启动命令也要确保在manage.py所在目录执行:
CMD ["python", "manage.py", "runserver", "0.0.0.0:8080"]
4. 进入容器验证文件结构
启动交互式容器,直接检查内部文件状态:
docker run -it --rm django-ec2-complete:latest /bin/bash
进入后执行ls确认django_ec2_complete目录存在,再用python -c "import django_ec2_complete"测试模块能否被导入,快速定位问题点。
5. 配置PYTHONPATH环境变量
如果项目路径不在Python默认搜索范围内,在Dockerfile中添加:
ENV PYTHONPATH=/app
强制Python在工作目录下查找模块。
内容的提问来源于stack exchange,提问作者Andrei
相关产品推荐
相关产品推荐

