Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Docker容器中自动启动golang应用程序?_Docker_Go_Docker Compose - Fatal编程技术网

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

如何在Docker容器中自动启动golang应用程序?,docker,go,docker-compose,Docker,Go,Docker Compose,我有带Golang和Mongo的Docker集装箱。我想制作电报机器人,我想在更改源代码时自动重新编译/重新运行我的go应用程序。 我试着用,但没用 更改源代码后自动重新运行go应用程序需要使用什么?我需要的任何东西似乎都是nodemon为了nodejs,但是为了go 这里是我的和配置 Linux上的大多数文件监视工具都将其用作首选机制。你提到的工具似乎属于同一类 问题是对Windows中的文件系统的更改不会导致Linux来宾发布事件。这是意料之中的,因为Windows不“知道”已设置了监视,因

我有带Golang和Mongo的Docker集装箱。我想制作电报机器人,我想在更改源代码时自动重新编译/重新运行我的go应用程序。 我试着用,但没用

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

这里是我的和配置


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"