搬运工add命令不能作为参数传递的路径添加到它

问题描述:

我有一个Dockerfile,我想即将建成后,詹金斯Maven构建推动。我在我的Dockerfile这些行:搬运工add命令不能作为参数传递的路径添加到它

... 
ARG MAIN_DIR 
ADD $MAIN_DIR . 
... 

而且我通过MAIN_DIR参数如下:

docker build -t my.gitlab.com:4567/path/to/my/project/my-image-name:my-image-tag --build-arg MAIN_DIR=Development . 

,但我得到:

ADD failed: stat /var/lib/docker/tmp/docker-builder832988213/Development: no such file or directory 

编辑1:

COPY $MAIN_DIR .生成sa我问题。

编辑2:

当前目录实际上包含了一个名为Development目录,我完全确信没有.dockerignore文件中的整个项目。

+0

是否在命令被执行的fodler有一个名为发展?您可能运行在错误的目录或文件夹,发展你的构建也未必会有 –

+0

@TarunLalwani,是的,它;但'Development'不在'/ var/lib/docker/tmp/docker-builder832988213 /'下面。 –

+0

这是因为版本会创建新的目录,并把所有的时间在那里。我可以怀疑的另一件事是'.dockerignore'的存在不会让该目录被发送到守护进程。或者其他方面,它被称为“发展”而不是“发展”。 Docker是区分大小写的 –

从正在使用我们的聊天讨论Dockerfile是开发目录下,并且您使用以下构建图像

docker build -t my.gitlab.com:4567/path/to/my/project/my-image-name:my-image-tag --build-arg MAIN_DIR=Development --build-arg VERSION=1.0.0 path/to/Docker/context/dir 

pwd

/home/jenkins/.jenkins/workspace/Project-Name 

所以,当你发送上下文目录作为包含Dockerfile的目录,那么仅将该目录的内容作为上下文发送到docker守护进程。开发文件夹位于父层次结构中。因此,您将无法访问上下文文件夹之上或之外的任何内容。

解决方案是使用一个上下文目录是独立于Dockerfile

docker build -t my.gitlab.com:4567/path/to/my/project/my-image-name:my-image-tag --build-arg MAIN_DIR=Development --build-arg VERSION=1.0.0 -f path/to/docker/directory/Dockerfile path/to/projectdirectory