如何在 Docker 容器中自动重启 golang 应用程序?

我有带有 Golang 和 Mongo 的 Docker 容器。我想制作电报机器人,并且我想在更改源代码时自动重新编译/重新运行我的 go 应用程序。我尝试使用mitranim/gow,但没有成功。

更改源代码后,我需要使用什么来自动重新运行我的 go 应用程序?我需要任何东西似乎是用于nodejs的nodemon,但对于go

这是我的docker-compose和dockerfile配置。

My host machine is win10


BIG阳
浏览 118回答 1
1回答

桃花长相依

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"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go