我有两个go模块github.com/myuser/mymainrepo
和github.com/myuser/commonrepo
这是我在本地计算机上保存文件的方式
- allmyrepos
- mymainrepo
- Dockerfile
- go.mod
- commonrepo
- go.mod
...
require (
github.com/myuser/commonrepo
)
replace (
github.com/myuser/commonrepo => ../commonrepo
)
效果很好,我可以用它进行本地开发。我正在构建mymainrepo的docker映像时发生问题。
...
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
指令。但是它会在commonrepo
中寻找从github下载的~/go/pkg/mod/...
。
我有两个go模块github.com/myuser/mymainrepo和github.com/myuser/commonrepo这是我在本地计算机中的文件的方式-allmyrepos-mymainrepo-Dockerfile-go.mod-...
创建两个go.mod
文件:一个用于本地开发,一个用于构建。您可以将其命名为go.build.mod
。
将replace
指令保留在go.mod
文件中,但将其从go.build.mod
中删除。