我有带有 Golang 和 Mongo 的 Docker 容器。我想制作电报机器人,并且我想在更改源代码时自动重新编译/重新运行我的 go 应用程序。我尝试使用mitranim/gow,但没有成功。更改源代码后,我需要使用什么来自动重新运行我的 go 应用程序?我需要任何东西似乎是用于nodejs的nodemon,但对于go这是我的docker-compose和dockerfile配置。My host machine is win10
1 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
Linux 上的大多数文件监控工具都使用inotify作为首选机制。您提到的mitranim/gow工具似乎属于同一类别。
问题在于,对 Windows 中的文件系统进行更改不会导致 Linux 来宾发布该事件。这是预料之中的,因为 Windows 不“知道”已设置监视,因此无法在文件更改时通知 Linux 容器。这是虚拟化环境或其他跨平台/网络文件系统共享解决方案的常见问题。
该问题的一个可能的解决方案是使用轮询。nodemon
有一个legacyWatch
标志,可以在文件更改时运行任何命令:
在某些网络环境中(例如运行 nodemon 的容器在已安装的驱动器上读取数据),您将需要使用 LegacyWatch: true 来启用 Chokidar 的轮询。
例子:
nodemon --legacy-watch <working-dir> -e go --exec "go run main.go"
nodemon
或者与其他监控工具结合使用,nodemon
在检测到文件更改时触摸文件(有点黑客攻击):
nodemon --legacy-watch <working-dir> -e go --exec "touch main.go"
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报
0/150
提交
取消