Docker部署Django项目时Gunicorn报config模块找不到错误
解决Docker中Gunicorn启动Django项目时的ModuleNotFoundError(找不到config模块)
问题原因
collectstatic和migrate能成功执行,是因为通过project/manage.py启动时,Python会自动将manage.py所在的project目录加入sys.path,所以能找到config模块。但Gunicorn默认以容器的工作目录/app启动,此时sys.path里不包含/app/project,导致找不到config模块。
解决方案
修改entrypoint.sh中的Gunicorn启动命令,让Python能找到config模块,以下两种方法二选一:
方法1:指定Gunicorn的工作目录到project
调整启动命令,添加--chdir project参数,让Gunicorn切换到project目录下运行:
echo 'Starting server...' exec poetry run gunicorn --chdir project config.wsgi:application --bind 0.0.0.0:8000
方法2:手动添加project目录到Python路径
用--pythonpath参数指定/app/project为Python的模块搜索路径:
echo 'Starting server...' exec poetry run gunicorn --pythonpath /app/project config.wsgi:application --bind 0.0.0.0:8000
验证修改
重新构建并启动容器:
docker-compose down docker-compose up --build
内容的提问来源于stack exchange,提问作者dev-beginer
相关产品推荐
相关产品推荐

