我有一个结构的单声道 repo 。

mono-repo
- serviceA
 - main.go
 - Dockerfile
-serviceB
 - main.go
 - Dockerfile
go.mod
go.sum

serviceA中的Dockerfile包含以下代码。
FROM golang

ENV GO111MODULE=on

WORKDIR /app

COPY . .

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

ENTRYPOINT ["/app/serviceA"]

我想构建Docker镜像并在容器中包含来自我的mono-repo根的依赖项,我目前收到一条错误消息,说它在运行时找不到任何依赖项包



除非我将go.mod放在serviceA内,否则我看不到实现自己想要的东西的好方法。通过将go.mod放置在服务中,感觉就像我失去了在仓库中共享依赖项的服务优势一样。

最佳答案



但是,这是herethere看到的一种方法,其中COPY go.mod .(和COPY go.sum .)后跟RUN go mod download

#This is the ‘magic’ step that will download all the dependencies that are specified in
# the go.mod and go.sum file.
# Because of how the layer caching system works in Docker, the  go mod download
# command will _ only_ be re-run when the go.mod or go.sum file change
# (or when we add another docker instruction this line)
RUN go mod download

关于docker - 使用mono repo将Go依赖项包含在Docker容器中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55786159/

10-16 03:50
查看更多