使用test.yml docker-compose配置启动时Django热重载功能失效
问题根因
Django 内置的manage.py testserver命令默认禁用了自动热重载机制,该设计是为了避免测试过程中服务意外重启干扰测试流程,和你的Docker挂载配置无关。你两套配置的volume挂载规则一致,本地文件变更已经可以正常同步到容器内,仅服务本身没有监听文件变更重启。
解决方案
方案1:给testserver添加重载参数(适用Django 4.0+版本)
直接在test.yml的web服务启动命令末尾添加--reload参数即可开启热重载:
command: > sh -c "python manage.py makemigrations && python manage.py migrate && python manage.py testserver cypress/fixtures/user.json cypress/fixtures/tracks.json --addrport 0.0.0.0:8000 --reload"
方案2:改用runserver加载fixture(全版本兼容,更稳定)
如果方案1不生效,建议把测试环境启动逻辑换成和开发环境一致的runserver,先手动加载fixture再启动服务,天然支持热重载:
command: > sh -c "python manage.py makemigrations && python manage.py migrate && python manage.py loaddata cypress/fixtures/user.json cypress/fixtures/tracks.json && python manage.py runserver 0.0.0.0:8000"
额外配置修正
你当前test.yml中的celeryworker服务启动命令存在笔误,缺少worker参数,建议修正为和开发环境一致的配置:
command: celery -A app worker -l INFO
内容的提问来源于stack exchange,提问作者enjoi4life411
相关产品推荐
相关产品推荐

