Я перевожу приложение Go 1.10 на Go 1.11.Сюда также входит миграция с dep
на mod
для управления зависимостями.
Поскольку приложение зависит от базы данных, я использую docker-compose
длянастроить местную среду разработки.С Go 1.10 я просто монтировал локальный репозиторий (включая папку vendor
) в правильное место в контейнере GOPATH
:
web:
image: golang:1.10
working_dir: /go/src/github.com/me/my-project
volumes:
- .:/go/src/github.com/me/my-project
environment:
- GOPATH=/go
- PORT=9999
command: go run cmd/my-project/main.go
С канавами Go 1.11 GOPATH
(при использовании модулей, которые) Я думал, что смогу просто сделать следующее:
web:
image: golang:1.11rc2
working_dir: /app
volumes:
- .:/app
environment:
- PORT=9999
command: go run cmd/my-project/main.go
Это работает, но каждый раз, когда я docker-compose up
(или любая другая команда, вызывающая инструмент Go), он разрешает и повторно загружаетдерево зависимостей с нуля.Этого не происходит (точнее, только один раз), когда я запускаю команду за пределами контейнера (то есть в моей локальной ОС).
Как улучшить настройку, чтобы контейнер Docker сохранял модули, загружаемые программой?go
инструмент?