Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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 compose以监视多包golang项目的更改_Docker_Go - Fatal编程技术网

设置docker compose以监视多包golang项目的更改

设置docker compose以监视多包golang项目的更改,docker,go,Docker,Go,我正在使用go应用程序 它是这样建造的: cmd app main.go internal app server.go pkg users ... pkg dependency ... web app ... docker-compose.yml Dockerfile 然而,问题是,使用这种结构很难装载和构建应用程序依赖项。例如,我使用一个文件监视程序,例如,它只监视一个目录并运行一个特定的文件。如果我更新saypkg/d

我正在使用go应用程序

它是这样建造的:

cmd
  app
    main.go
internal
  app
    server.go
  pkg
    users
      ...
pkg
  dependency
    ...
web
  app
    ...
docker-compose.yml
Dockerfile
然而,问题是,使用这种结构很难装载和构建应用程序依赖项。例如,我使用一个文件监视程序,例如,它只监视一个目录并运行一个特定的文件。如果我更新say
pkg/dependency
,它将不会看到这些更改

docker compose看起来像:

version: "3.1"

services:
  core:
    build: .
    depends_on:
      - mongo
      - memcached
    ports:
      - 8080:8080
    environment:
      APP_ENV: dev
    volumes:
      - .:/go/src/github.com/me/app
  mongo:
    image: mongo
    ports:
      - 27017:27017
  memcached:
    image: memcached
    ports:
      - 11211:11211
Dockerfile:

FROM golang:1.10.0

WORKDIR /go/src/github.com/me/app

COPY . .

RUN go get -u github.com/golang/dep/cmd/dep
RUN dep ensure

WORKDIR /go/src/github.com/me/app/cmd/app/
RUN go install
RUN go get github.com/pilu/fresh

CMD ["fresh"]

有什么帮助吗?

我会回到
fresh
repo并询问他们

如果您的文件更改被保存到git,那么您可以设置一个侦听这些
git推送
操作来触发重建

但是,如果它们只是编辑,那么您可以使用类似于

在任意一组文件/dir上执行相当于
tail-f
的功能,我发现这些文件/dir工作得很好(我的日志触发了一个用于错误检查的解析守护进程)


但是你是对的,考虑到你的用例,可能有一种更简单的方法

当你给你现有的文件更改监控工具上面所有代码目录的父目录时会发生什么?它说找不到可运行的go文件我想我可能不得不写一些基本上看每个包的东西,在更改时,重新安装软件包,然后重新启动服务器…谢谢。我要签出这两个链接。我可能最终会使用一些通用的东西——不必是go,我猜其他语言可能已经解决了这个问题。