2

我有一个结构的单一回购。

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 根目录的依赖项,我目前收到一条错误消息,说它在运行时找不到任何依赖包

docker build -t serviceA 。

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

4

1 回答 1

1

通过在服务中放置一个 go.mod,感觉就像我失去了在 repo 中共享依赖项的服务的优势。

然而,这是一种在这里那里看到的方法,其中COPY go.mod .(and 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
于 2019-04-21T20:22:45.923 回答