【发布时间】:2020-07-26 12:18:20
【问题描述】:
我有一个包含各种 Go 服务和库的 monorepo。它的结构为
monorepo
services
service-a
- Dockerfile
go.mod
go.sum
我的 go.mod 位于 monorepo 的根目录中,服务使用 go.mod 文件中所述的依赖项。
我使用构建 Docker 映像
docker build -t some:tag ./services/service-a/
当我尝试使用上述 docker 命令从 monorepo 的根目录构建我的 Docker 映像时,我收到以下错误。
复制失败:构建上下文之外的禁止路径:../../go.mod ()
下面是我的 Dockerfile
FROM golang:1.14.1-alpine3.11
RUN apk add --no-cache ca-certificates git
# Enable Go Modules
ENV GO111MODULE=on
# Set the Current Working Directory inside the container
WORKDIR /app
# Copy go mod and sum files
COPY ../../go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o service-a
ENTRYPOINT ["/app/service-a"]
我必须做些什么才能将不在当前目录中的文件添加到我的 Docker 映像中,而不必在 monorepo 中的每个服务中都有单独的 go.mod 和 go.sum 吗?
【问题讨论】: