【发布时间】:2020-08-22 17:56:39
【问题描述】:
我有两个 go 模块 github.com/myuser/mymainrepo 和 github.com/myuser/commonrepo
这是我在本地计算机中的文件
- allmyrepos
- mymainrepo
- Dockerfile
- go.mod
- commonrepo
- go.mod
mymainrepo/go.mod
...
require (
github.com/myuser/commonrepo
)
replace (
github.com/myuser/commonrepo => ../commonrepo
)
效果很好,我可以用它进行本地开发。当我构建 mymainrepo 的 docker 映像时会出现问题
mymainrepo/Dockerfile
...
WORKDIR /go/src/mymainrepo
COPY go.mod go.sum ./
RUN go mod download
COPY ./ ./
RUN go build -o appbinary
...
这里replace 将github.com/myuser/commonrepo 替换为../commonrepo,但在Docker 中/go/src/commonrepo 不存在。
我正在 CI/CD 上构建 Docker 映像,它需要直接从远程 github url 获取,但我还需要在 commonrepo 上进行本地开发。我怎样才能做到这两点?
我尝试将所有文件放在GOPATH 中,所以它是~/go/src/github.com/myuser/commonrepo 和go/src/github.com/myuser/mymainrepo。我删除了replace 指令。但它会在从 github 下载的 ~/go/pkg/mod/... 中查找 commonrepo。
【问题讨论】:
-
您能解决问题吗?我有完全一样的问题。你能分享你的 Dockerfile 吗?
标签: docker go dependencies dependency-management go-modules