如何在Docker容器中自动启动golang应用程序?
我有带Golang和Mongo的Docker集装箱。我想制作电报机器人,我想在更改源代码时自动重新编译/重新运行我的go应用程序。 我试着用,但没用 更改源代码后自动重新运行go应用程序需要使用什么?我需要的任何东西似乎都是nodemon为了nodejs,但是为了go 这里是我的和配置如何在Docker容器中自动启动golang应用程序?,docker,go,docker-compose,Docker,Go,Docker Compose,我有带Golang和Mongo的Docker集装箱。我想制作电报机器人,我想在更改源代码时自动重新编译/重新运行我的go应用程序。 我试着用,但没用 更改源代码后自动重新运行go应用程序需要使用什么?我需要的任何东西似乎都是nodemon为了nodejs,但是为了go 这里是我的和配置 Linux上的大多数文件监视工具都将其用作首选机制。你提到的工具似乎属于同一类 问题是对Windows中的文件系统的更改不会导致Linux来宾发布事件。这是意料之中的,因为Windows不“知道”已设置了监视,因
Linux上的大多数文件监视工具都将其用作首选机制。你提到的工具似乎属于同一类 问题是对Windows中的文件系统的更改不会导致Linux来宾发布事件。这是意料之中的,因为Windows不“知道”已设置了监视,因此无法在文件更改时通知Linux容器。这是虚拟化环境或其他跨平台/网络文件系统共享解决方案的常见问题 您可能希望了解类似的问题: 解决这个问题的一个可能方法是使用轮询
nodemon
有一个legacyWatch
标志,可以在文件更改时运行任何命令:
在某些网络环境中(例如运行nodemon的容器
阅读已安装的驱动器),您需要使用legacyWatch:
这将启用Chokidar的轮询
例如:
nodemon --legacy-watch <working-dir> -e go --exec "go run main.go"
像这样的:?是的,谢谢。但这看起来很奇怪,当我运行“gin--all--I run main.go”并用“docker exec--it machnineame/bin/bash”连接到docker之后,它就可以工作了,但是如果我在dockerfile中编写它的命令,比如“run[“gin”、“--all”、“-I”、“run”、“main.go”]”,它只会构建一次,在更改后不会重新编译。我发现,若我在docker终端上用“touch”命令标记文件已更改,它将工作。但若我从主机(windows)更改编辑器中的文件,它将不起作用。看来windows上的docker很麻烦
nodemon --legacy-watch <working-dir> -e go --exec "go run main.go"
nodemon --legacy-watch <working-dir> -e go --exec "touch main.go"