Docker环境中Nodemon无法监听代码变更自动重启问题求助
问题修复方案
你遇到的Nodemon无法触发重启的核心原因是docker-compose卷挂载配置错误,没有将本地源码变更同步到容器内部,具体修复步骤如下:
问题根源说明
你当前actions服务配置的volumes: - actions:/./app属于命名卷挂载,这类存储由Docker统一管理,不会和本地源码目录做实时同步,你本地修改代码时容器内部的对应文件不会更新,Nodemon自然检测不到变更。你猜测的- "./actions:/app/action-handers"既不存在于当前生效配置中,路径也有拼写错误,即使添加也无法正常生效。
修复步骤
- 修改docker-compose.yml中actions服务的volumes配置,替换原有的命名卷挂载为绑定挂载,将本地源码目录直接映射到容器工作目录,同时排除node_modules目录避免本地和容器依赖冲突:
# actions服务下的volumes配置修改为 volumes: - ./action-handlers:/app # 绑定本地源码目录到容器内的工作目录 - /app/node_modules # 匿名卷覆盖,避免本地node_modules覆盖容器内的依赖
- 删除全局volumes字段下的
actions:声明,绑定挂载不需要提前声明命名卷。 - 若你使用Windows/WSL或者macOS环境,存在文件系统变更事件无法传递到容器的情况,可以给Nodemon添加
-L启动参数开启轮询检测,将package.json中对应的watch命令修改为nodemon -L 你的应用入口文件路径即可,轮询模式仅会消耗少量性能,可兼容所有环境的文件变更检测。
验证方法
配置修改完成后执行docker-compose up --force-recreate重启服务,再修改本地action-handlers目录下的代码,即可看到Nodemon正常触发重启。
内容的提问来源于stack exchange,提问作者Charklewis
相关产品推荐
相关产品推荐

