远程服务器Docker中Django项目代码修改后自动重载失效问题
问题根因&修复方案
1. 启用Gunicorn自动重载参数
你当前使用的Gunicorn默认关闭了文件变动监听重载功能,仅需修改docker-compose中web服务的启动命令,添加--reload参数即可:
command: gunicorn my_project.wsgi:application --bind 0.0.0.0:8000 --reload
该参数仅可在开发环境使用,禁止用于生产部署,会带来性能下降和安全风险
2. 修复跨环境文件监听失效问题
如果是本地Windows/macOS同步代码到Linux远程服务器、或者使用WSL环境,系统默认的inotify文件监听机制可能失效,可额外添加轮询重载的参数强制检测文件变动:
command: gunicorn my_project.wsgi:application --bind 0.0.0.0:8000 --reload --reload-engine=poll
3. 开发环境替代方案:使用Django自带runserver
如果Gunicorn重载仍存在异常,开发阶段可直接替换为Django官方开发服务器,自带的重载机制兼容性更强:
command: python manage.py runserver 0.0.0.0:8000
Django runserver仅适用于开发场景,禁止在生产环境使用
4. 配置校验项
- 确认项目
settings.py中DEBUG = True,开发环境下可配合重载直接展示修改后的效果 - 进入容器验证文件同步是否生效,执行命令:
确认输出内容和本地修改后的版本一致,排除挂载路径不匹配的问题docker exec -it my_project_ws cat /my_project/你修改的代码文件路径
内容的提问来源于stack exchange,提问作者MRavaghi
相关产品推荐
相关产品推荐

