docker add命令无法添加作为parameter passing给它的path

我有一个Dockerfile ,我想在jenkins maven构build之后构build和推送。 我在Dockerfile有这些行:

 ... 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 . 产生相同的问题。

编辑2:

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

从我们的聊天讨论中,您正在使用的Dockerfile在开发目录下,您正在使用下面来构build映像

 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守护进程作为上下文。 开发文件夹在父层次结构中。 因此,您将无法访问上下文文件夹之上或之外的任何内容。

解决scheme是使用独立于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 
Interesting Posts