0

我有一个Dockerfile我想在 jenkins maven 构建后构建和推送的。我的中有这些行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整个项目中没有文件。

4

1 回答 1

1

从我们的聊天讨论中,您使用的 Dockerfile 位于 Development 目录下,您正在使用下面来构建映像

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
于 2017-08-27T12:15:27.770 回答