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

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

这是我的docker-composedockerfile配置。

My host machine is win10

最佳答案

Linux上的大多数文件监视工具都将首选机制inotify用作它们。您提到的mitranim/gow工具似乎属于同一类。

问题是Windows中对文件系统的更改不会导致Linux guest虚拟机发布事件。这是预料之中的,因为Windows无法“知道”已设置的监视,因此当文件更改时无法通知Linux容器。对于虚拟化环境或其他跨平台/网络文件系统共享解决方案,这是一个常见问题。

您可能需要看一下类似的问题:Inotify on shared drives does not work

该问题的可能解决方案是使用轮询。 nodemon具有legacyWatch标志,当文件更改时可以运行任何命令:



例子:

nodemon --legacy-watch <working-dir> -e go --exec "go run main.go"

或通过将nodemon在检测到文件更改(有点像hack)时触摸文件,将nodemon与其他监视工具结合使用:
nodemon --legacy-watch <working-dir> -e go --exec "touch main.go"

关于docker - 如何在Docker容器中自动重启golang应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58406074/

10-10 13:45