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

Docker部署Django应用StatReloader热重载失效问题求助

Docker部署Django应用StatReloader热重载失效解决方案

问题分析

Docker挂载卷的文件系统大多不支持宿主机的inotify事件,而Django默认的StatReloader依赖该事件监听文件变更,导致即使挂载卷同步正常,热重载也无法触发。

解决步骤

1. 切换为PollingReloader(最直接有效)

在启动脚本中添加环境变量指定轮询式重载器,绕过inotify依赖:

export PYTHONUNBUFFERED=1
export DJANGO_RELOADER_CLASS=django.utils.autoreload.PollingReloader
python3 manage.py runserver 0.0.0.0:8080

PollingReloader通过定期扫描文件系统检测变更,不受Docker挂载的文件系统限制,能确保主机修改文件后容器立即触发重载。

2. 确认挂载与权限配置

  • 确保使用绑定挂载(bind mount)同步主机代码目录到容器,而非匿名/命名卷(这类卷无法实时同步文件变更)。
  • 检查容器内运行Django的用户对挂载目录有读权限,可执行docker exec <容器ID> ls -l /your/app/dir验证。

3. 排查重载开关与DEBUG状态

  • 启动命令不要包含--noreload参数,该参数会完全禁用重载功能。
  • 确认settings.py中DEBUG = True未被环境变量或其他配置覆盖,可通过docker exec <容器ID> python3 manage.py shell -c "from django.conf import settings; print(settings.DEBUG)"验证。

验证方法

修改主机上任意.py文件后,查看容器日志,若出现Watching for file changes with PollingReloader或代码重载相关日志,说明热重载已正常工作。

内容的提问来源于stack exchange,提问作者Aleksa Bajat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:43:40