gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:32:12 24 4
gpt4 key购买 nike

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

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

这是我的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 标志,可以在文件更改时运行任何命令:

In some networked environments (such as a container running nodemon reading across a mounted drive), you will need to use the legacyWatch: true which enables Chokidar's polling.

示例:

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"

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com