Dockerhub 自动构建失败,添加文件时 "not a directory"

Dockerhub automated build fails, "not a directory" when adding file

我正在尝试使用 docker 集线器自动构建在本地构建良好的东西。它没有说:

Build process failed: stat /var/lib/docker/aufs/mnt/1be9db483fa6f3de2596b5261e7c450de8df503185e579278396f14ba179c257/bin/run.sh: not a directory

您可以在此处查看构建本身: https://hub.docker.com/r/zbyte64/rethinkdb-tlsproxy/builds/bjclhq33kgwxxvn6nbfsgyh/

run.shDockerfile 在同一目录中,似乎 dockerhub 上的构建路径与存储 Dockerfile 的位置不同。

我尝试了以下变体:

COPY run.sh /bin

ADD ./run.sh /bin

我不知道为什么,但是 dockerhub 希望 COPY 或 ADD 的第一个参数是目录 - 而不是文件。我在本地是 运行 Docker 1.9.1,但事实并非如此。我将 Docker 文件切换为复制资源目录而不是单个文件,一切开始起作用。

COPY 命令(在 Dockerhub 的 Docker 版本上)期望目标文件位于右侧,而不仅仅是目标目录。即使在 Dockerhub.

上,以下命令也应该适用于您
COPY run.sh /bin/run.sh

或者,如果您想使用 ADD,请包含尾部斜杠。 ADD ./run.sh /bin/

到底发生了什么?来自 https://docs.docker.com/engine/reference/builder/#add : 添加源目标 "If dest does not end with a trailing slash, it will be considered a regular file and the contents of src will be written at dest."

没有 /bin 上的尾部斜杠,它期望 run.sh 是一个正在复制到目录 /bin 的目录。