在Docker BUILD期间从外部绝对位置添加文件?

Adding a file from an external absolute location during Docker BUILD?

我试图修改一个包含如下代码的Dockerfile

1
2
3
4
5
6
7
ARG FILE_SOURCE_DIR

ADD ${FILE_SOURCE_DIR}/check-md5.sh /download/
ADD ${FILE_SOURCE_DIR}/app /app/
ADD ${FILE_SOURCE_DIR}/R/JRI.jar /download/
ADD ${FILE_SOURCE_DIR}/R/JRIEngine.jar /download/
ADD ${FILE_SOURCE_DIR}/R/REngine.jar /download/

我的构建环境如下:

1
2
3
4
   \downloads
   \images
       \kafka
           Dockerfile

我想把FILE_SOURCE_DIR作为一个相对路径(根据文档)传入,但是我不能正确地使用语法-无论我尝试什么,我都会得到一个类似以下的错误:

1
 ADD failed: stat /var/lib/docker/tmp/docker-builder187920988/downloads/check-md5.sh: no such file or directory

有时我会得到:

1
ADD failed: Forbidden path outside the build context: ../../downloads/check-md5.sh ()

我知道路径必须与上下文目录相关,但正如我所说,我尝试的任何操作似乎都不起作用:

1
2
3
"../../downloads"
"..\..\downloads"
"C:\path\downloads"

docker add命令是否仅限于上下文中的内容?如果是,如何在多个上下文中包含同一个文件?


你可以specify卡夫卡的《dockerfile外部的文件夹使用F。

1
docker build -t tag-name -f images/kafka/Dockerfile .

所以你可以下载文件夹的访问


ADD obeys the following rules:

The path must be inside the context of the build
...

从dockerfile参考。