gpt4 book ai didi

docker - 如何访问 Dockerfile 中的 Docker 构建上下文路径

转载 作者:行者123 更新时间:2023-12-02 18:47:51 42 4
gpt4 key购买 nike

我在目录中定义了 Dockerfile

C:\work\Personal\API\api-service

Dockerfile

FROM maven:3.6.1-jdk-8 AS BUILD_IMAGE 
COPY api-service /usr/src/app/api-service
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean install

我正在尝试从 C:

运行 docker build C:\work\Personal\API\api-service

这会导致错误提示

COPY failed: stat /var/lib/docker/tmp/docker-builder483308674/api-init-service: no such file or directory

为了让我将源代码从本地机器复制到 docker,我需要知道我的 Dockerfile 中构建上下文文件夹的位置。

有什么方法可以访问 Dockerfile 中传递给 docker build 命令的构建上下文文件夹?

在我的本地机器上,我可以从 Dockerfile 所在的同一目录运行 docker build 命令。但是从 CI 工具我不知道 docker build 命令将在哪里执行。因此,如果我知道作为参数传递的 docker build 上下文路径,我可以根据上下文路径将源代码复制到 docker 镜像中。

最佳答案

您不需要 dockerfile 中已知的 docker build 上下文位置。

你需要知道的是:

  • 您构建上下文的位置。 (比如 C:\work\Personal\mycontext 包含您需要在 docker 容器中复制的文件和文件夹)
  • dockerfile 的位置(比如 C:\work\Personal\API\api-service\Dockerfile)
  • 您还需要了解上下文的相对文件路径结构。喜欢
- C:\work\Personal\mycontext
|
- scripts
|
- start.sh
|
- create.py
|
- target
|
- maven
|
- abc.jar

在这种情况下,您的 dockerfile 将包含适当的命令,例如 COPY scripts/scripts 假设这些文件从上下文文件夹 C:\work\运行,它们会复制这些文件个人\mycontext

您的 docker build 命令将是

docker build -f C:\work\Personal\API\api-service\Dockerfile -t image:version1 C:\work\Personal\mycontext

注意:这里 -f 选项指定 dockerfile 的位置,在这种情况下它的 C:\work\Personal\API\api-service\DockerfileC:\work\Personal\mycontext 指定 docker 构建上下文的位置。

无论 docker build 命令运行的位置如何,只要您提供 dockerfile 和 docker build context 的确切位置,它就会起作用。

更多信息 here .

希望这会有所帮助。

关于docker - 如何访问 Dockerfile 中的 Docker 构建上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282805/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com