问题
通过Dockerfile
制作镜像时,常常需要复制文件到镜像里。但想要复制上级目录/父级目录的文件该怎么办呢?
COPY ../../pkslow.sh /opt/app/pkslow/pkslow.sh
这样是无效的。Dockerfile
并不支持../
指向上级目录的方式。
而我们通过docker build -t my-tab /dockerfile.dir
打包里,Dockerfile
必须在dockerfile.dir
里,这样看它只能复制dockerfile.dir
目录下的文件了。
解决方案
所以解决方案很简单,就是把你需要的文件放在dockerfile.dir
目录就行了。
更优的方案
实际上,Dockerfile
与build
镜像的上下文目录不必强关联在一起的。可以通过以下命令来build
:
$ docker build -t my-tab -f /abc/defg/my-dockerfile /context-dir
这样便可实现两者的分离了,Dockerfile
所描述的相对路径,是以context-dir
为基础的。这点必须搞清楚!!!这样我们就可以复制context-dir
目录下的所有文件了。因为能自由指定context-dir
,自然就能复制任何上级目录的文件了。