我正在尝试使用docker hub自动构建在本地构建良好的东西。它没说:
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.sh
与Dockerfile
位于同一目录中,似乎dockerhub上的构建路径与存储Dockerfile的位置不同。
我尝试了以下变体:
COPY run.sh /bin
ADD ./run.sh /bin
答案 0 :(得分:4)
COPY
命令(在Dockerhub的Docker版本上)需要右侧的目标文件,而不仅仅是目标目录。即使在Dockerhub上,以下命令也适用于您。
COPY run.sh /bin/run.sh
答案 1 :(得分:1)
或者如果要使用ADD,请包含尾部斜杠。
ADD ./run.sh /bin/
实际发生了什么?来自https://docs.docker.com/engine/reference/builder/#add: 添加src dest "如果dest不以尾部斜杠结束,它将被视为常规文件,src的内容将写入dest。"
如果没有/ bin上的尾部斜杠,它希望run.sh成为一个被复制到目录/ bin的目录。
答案 2 :(得分:0)
我不知道为什么,但是dockerhub希望COPY或ADD的第一个参数是一个目录 - 而不是一个文件。我在本地运行Docker 1.9.1,情况并非如此。我将Dockerfile切换为复制资源目录而不是单个文件,并开始工作。