使用 mono repo 在 Docker 容器中包含 Go 依赖项
Include Go dependencies in Docker container using mono repo
我有一个具有结构的单声道回购。
mono-repo
- serviceA
- main.go
- Dockerfile
-serviceB
- main.go
- Dockerfile
go.mod
go.sum
serviceA 中的Docker文件包含以下代码。
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 中共享依赖项的优势。
By placing a go.mod inside the service it feels like I'm losing the advantage of services sharing dependencies within the repo.
然而,这是 here or there 所见的方法,其中 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
我有一个具有结构的单声道回购。
mono-repo
- serviceA
- main.go
- Dockerfile
-serviceB
- main.go
- Dockerfile
go.mod
go.sum
serviceA 中的Docker文件包含以下代码。
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 中共享依赖项的优势。
By placing a go.mod inside the service it feels like I'm losing the advantage of services sharing dependencies within the repo.
然而,这是 here or there 所见的方法,其中 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