LarryDpk
发布于 2020-07-20 / 11026 阅读
0

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目录就行了。

更优的方案

实际上,Dockerfilebuild镜像的上下文目录不必强关联在一起的。可以通过以下命令来build

$ docker build -t my-tab -f /abc/defg/my-dockerfile /context-dir

这样便可实现两者的分离了,Dockerfile所描述的相对路径,是以context-dir为基础的。这点必须搞清楚!!!这样我们就可以复制context-dir目录下的所有文件了。因为能自由指定context-dir,自然就能复制任何上级目录的文件了。