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

时间:2018-04-03 17:02:38

标签: docker

我正在尝试修改包含以下代码的Dockerfile

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/

我的构建环境如下所示:

   \downloads
   \images
       \kafka
           Dockerfile

我想传递FILE_SOURCE_DIR作为相对路径(根据文档),但我无法正确使用语法 - 无论我尝试什么,我都会收到类似的错误:

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

有时我会这样:

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

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

"../../downloads"
"..\..\downloads"
"C:\path\downloads\"

Docker ADD命令是否仅限于上下文中的内容?如果是这样,如何在多个上下文中包含相同的文件?

2 个答案:

答案 0 :(得分:0)

  

ADD遵守以下规则:

     

路径必须位于构建的上下文中   ...

来自Dockerfile reference

答案 1 :(得分:0)

您可以使用-f。

指定Kafka文件夹外的Dockerfile
docker build -t tag-name -f images/kafka/Dockerfile .

这样您就可以访问下载文件夹