Настройка docker-compose для отслеживания изменений в мультипакетном проекте golang - PullRequest
0 голосов
/ 19 сентября 2018

Я использую стандартную структуру для моего приложения 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 голосов
/ 19 сентября 2018

Я хотел бы вернуться к этому fresh репозиторию и спросить их

Если изменения вашего файла сохраняются в git, вы можете настроить webhook, например https://github.com/adnanh/webhook, чтобы прослушивать эти git push действия, запускающие перестройку

Однако, если они являются просто правками, вы можете свернуть свои собственные, используя что-то вроде

https://github.com/hpcloud/tail

, чтобы сделать функциональный эквивалентна tail -f на произвольном наборе файлов / каталогов, которые, как мне показалось, работают хорошо (мои журналы запускают демон разбора для проверки ошибок)

но вы правы, возможно, существует более простой способ, учитывая вашслучай использования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...