# Dockerfile复制上级目录文件
# 问题
通过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,自然就能复制任何上级目录的文件了。