Sli*_*ady 6 dependencies go dependency-management docker go-modules
github.com/myuser/mymainrepo我有两个 go 模块github.com/myuser/commonrepo
这是我在本地计算机中保存文件的方式
- allmyrepos
- mymainrepo
- Dockerfile
- go.mod
- commonrepo
- go.mod
Run Code Online (Sandbox Code Playgroud)
...
require (
github.com/myuser/commonrepo
)
replace (
github.com/myuser/commonrepo => ../commonrepo
)
Run Code Online (Sandbox Code Playgroud)
它运行良好,我可以用它进行本地开发。当我构建 mymainrepo 的 docker 映像时出现问题
...
WORKDIR /go/src/mymainrepo
COPY go.mod go.sum ./
RUN go mod download
COPY ./ ./
RUN go build -o appbinary
...
Run Code Online (Sandbox Code Playgroud)
这里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 下载的commonrepo内部内容。~/go/pkg/mod/...
创建两个go.mod文件:一个用于本地开发,另一个用于您的构建。go.build.mod例如,您可以命名它。
将该指令保留replace在您的go.mod文件中,但将其从go.build.mod.
最后,在你的Dockerfile:
COPY go.build.mod ./go.mod
COPY go.sum ./
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6155 次 |
| 最近记录: |