我在目录中定义了 Dockerfile
C:\work\Personal\API\api-service
Run Code Online (Sandbox Code Playgroud)
文件
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
Run Code Online (Sandbox Code Playgroud)
我试图运行docker build C:\work\Personal\API\api-service从C:
这导致错误说
COPY failed: stat /var/lib/docker/tmp/docker-builder483308674/api-init-service: no such file or directory
Run Code Online (Sandbox Code Playgroud)
为了让我将源代码从本地机器复制到 docker,我需要知道构建上下文文件夹在我的Dockerfile.
有没有办法访问传递给docker build命令的构建上下文文件夹Dockerfile?
在我的本地机器上,我可以docker build从所在目录运行命令Dockerfile。但是从 CI 工具我不知道docker build命令将在哪里执行。因此,如果我知道docker build作为参数传递的上下文路径,我可以根据上下文路径将源代码复制到 docker 镜像中。
您不需要在您的dockerfile.
你需要知道的是:
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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您dockerfile将包含适当的命令,例如COPY scripts /scripts复制这些文件,假设它从上下文文件夹运行C:\work\Personal\mycontext
您的 docker build 命令将是
docker build -f C:\work\Personal\API\api-service\Dockerfile -t image:version1 C:\work\Personal\mycontext
Run Code Online (Sandbox Code Playgroud)
注意:这里的-f选项在这种情况下指定 dockerfile 的位置,C:\work\Personal\API\api-service\Dockerfile并C:\work\Personal\mycontext指定docker构建上下文的位置。
无论 docker build 命令运行的位置如何,只要您提供dockerfiledocker build 和 docker build 的确切位置,它就可以工作context。
更多信息在这里。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
5081 次 |
| 最近记录: |