为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
BIG阳 2023-07-31 15:01:12
我有带有 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"


查看完整回答
反对 回复 2023-07-31
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信