我正在将 Go 1.10 应用程序迁移到 Go 1.11。这还包括从dep
to迁移以mod
管理依赖项。
由于应用程序依赖于数据库,因此我使用 adocker-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
工具正在下载的模块?