docker - 如何访问 Dockerfile 中的 Docker 构建上下文路径
问题描述
我在目录中定义了 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
我试图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
为了让我将源代码从本地机器复制到 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
在这种情况下,您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
注意:在这种情况下,此处-f
选项指定 dockerfile 的位置,C:\work\Personal\API\api-service\Dockerfile
并C:\work\Personal\mycontext
指定 docker build 上下文的位置。
无论 docker build 命令运行的位置如何,只要您提供dockerfile
docker build的确切位置,它就会起作用context
。
更多信息在这里。
希望这可以帮助。
推荐阅读
- java - 函数发送不可解码的文本 Android / Java
- java - Java Maven 项目无法将数据写入 Firebase 实时数据库
- javascript - 未调用脚本标记上的危险SetInnerHtml 中的函数
- c# - 在调用 C# winforms 应用程序时使用更新的数据重新加载表单
- shell - 这个 shell 脚本只处理一个文件
- android - BLE 广告数据在一段时间后停止工作(溢出?)
- angularjs - 每当输入字段更改时,如何将输入字段的值记录到控制台
- automation - 黄瓜功能插件给出“步骤'xxxxx'没有匹配的胶水代码”
- c# - 向 Microsoft Visual Studio 安装程序项目添加启动条件(检查应用程序是否正在运行)
- php - 反向显示 .tpl 循环