我有一个拥有各种 Go 服务和库的 monorepo。它有一个结构
monorepo
services
service-a
- Dockerfile
go.mod
go.sum
Run Code Online (Sandbox Code Playgroud)
我的 go.mod 驻留在 monorepo 的根目录中,服务使用 go.mod 文件中声明的依赖项。
我用
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"]
Run Code Online (Sandbox Code Playgroud)
我需要做些什么才能将不在当前目录中的文件添加到我的 Docker 映像中,而不必在 monorepo 中的每个服务中使用单独的 go.mod 和 go.sum?
Bur*_*dar 23
Docker 只允许从上下文向图像添加文件,默认情况下,上下文是包含 Dockerfile 的目录。您可以在构建时指定不同的上下文,但同样,它不会让您包含该上下文之外的文件:
docker build -f ./services/service-a/Dockerfile .
Run Code Online (Sandbox Code Playgroud)
这应该使用当前目录作为上下文。
或者,您可以创建一个临时目录,将所有工件复制到那里并将其用作构建上下文。这可以通过 makefile 或构建脚本自动化。
小智 8
您可以使用 来构建和管理您的 docker 容器docker-compose,然后可以使用 helpcontext指令来解决这个问题,例如:
project_folder \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 src \n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 folder1\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 folder2\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docker-compose.yaml \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 copied_file.ext \nRun Code Online (Sandbox Code Playgroud)\ndocker-compose.yaml
version: '3'\nservices:\n\n your_service_name:\n build:\n context: ./ #project_folder for this case\n dockerfile: ./src/folder1/folder2/Dockefile\nRun Code Online (Sandbox Code Playgroud)\nDockerfile
FROM xxx\nCOPY copied_file.ext /target_folder/\nRun Code Online (Sandbox Code Playgroud)\n构建或重建服务:
\ndocker-compose build\nRun Code Online (Sandbox Code Playgroud)\n在服务上运行一次性命令:
\ndocker-compose run your_service_name <command> [arguments]\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
11082 次 |
| 最近记录: |