Docker ARG命令没有find文件

我试图将我的计算机上的一个.obj文件传递给一个docker文件,然后将其添加到图像,但我得到一个文件未find错误。 我试图访问的文件甚至与dockerfile在同一个文件夹中,但是并不总是如此。

运行这个命令后…

sh maya-pipeline.sh /Users/kromah/Documents/Developer/Github/Unity/unity-pipeline-maya/house_data/0004d52d1aeeb8ae6de39d6bd993e992/main.obj

maya-pipeline.sh

echo $1 docker build --build-arg house=$1 -t dock . 

echo命令输出文件位置

Dockerfile

 FROM mottosso/mayabase-centos MAINTAINER marcus@abstractfactory.io ARG house=/house_data/0004d52d1aeeb8ae6de39d6bd993e992/main.obj ADD $house /root/pipeline 

错误信息

 lstat Users/kromah/Documents/Developer/Github/Unity/unity-pipeline-maya/house_data/0004d52d1aeeb8ae6de39d6bd993e992/main.obj: no such file or directory 

Docker不允许你 Dockerfile所在的位置(在当前的Dockerfile的目录或其子目录之外)添加文件。

Docker的开发团队说这是出于“安全原因”:通过不允许这样做,它可以避免恶意的Dockerfiles尝试导入宝贵的/ etc / passwd或shadow文件或其他文件;-)

所以基本上,任何不以Dockerfile的根目录开始的path不能添加到容器中,也不能使用ADD和COPY。

请注意,符号链接不会更好地工作。

我的解决方法是将文件复制到Dockerfike所在的目录中。