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

时间:2018-09-19 15:22:19

标签: docker go

我正在将standard structure用于我的go应用程序。

它是这样构建的:

cmd
  app
    main.go
internal
  app
    server.go
  pkg
    users
      ...
pkg
  dependency
    ...
web
  app
    ...
docker-compose.yml
Dockerfile

但是,问题在于,使用这种结构很难安装和构建应用程序依赖项。例如,我使用诸如fresh之类的文件监视程序,它仅监视单个目录并运行特定文件。如果我更新说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"]

有帮助吗?

1 个答案:

答案 0 :(得分:1)

我会回退到该fresh回购并询问他们

如果文件更改已保存到git中,则可以设置webhook like https://github.com/adnanh/webhook来监听这些git push动作以触发重建

但是,如果只是编辑内容,则可以使用类似的方式滚动自己的内容

https://github.com/hpcloud/tail

对我发现可以正常工作的任意文件/目录集执行与tail -f等效的功能(我的日志触发了一个解析守护程序以进行错误检查)

但是您说得对,鉴于您的用例,也许有一种更简单的方法