我有Golang和Mongo的Docker容器。我想制作电报bot,并且我想在更改源代码时自动重新编译/重新运行go应用程序。
我尝试使用mitranim/gow,但是没有用。
更改源代码后,我需要使用什么来自动重新运行go应用程序?我需要什么似乎对nodejs来说是nodemon,但是去
这是我的docker-compose和dockerfile配置。
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/