如何让Docker COPY复制目录本身而非仅内容?是否需先建目录?
在Dockerfile中保留主机目录本身的复制方法
答案是不需要提前用RUN mkdir创建目录,Docker的COPY(或ADD)指令本身就支持保留主机目录的结构,只需调整指令的路径写法即可:
两种实现方式
方式一:指定完整的目标目录路径
如果想把主机上的my_dir目录完整复制到镜像的/opt/my_dir路径下,直接写:COPY my_dir /opt/my_dir此时Docker会自动创建
/opt/my_dir目录,并将主机my_dir里的所有内容复制进去,镜像中就会保留my_dir这个目录本身。方式二:指定目标父目录
若要将主机my_dir目录放到镜像的/opt目录下(最终路径为/opt/my_dir),可以写:COPY my_dir /opt/Docker会自动在
/opt下创建my_dir目录,再复制内容进去。
关于官方文档说明的补充
官方文档提到:
仅复制目录的内容,不复制目录本身。
这句话的意思是当目标路径是已存在的目录时,会把源目录的内容直接复制到目标目录里,而不会在目标目录下创建源目录。比如如果镜像中已经有/opt目录,写COPY my_dir/ /opt/(注意源目录后面的斜杠),就会把my_dir里的内容直接放到/opt下,而不会生成/opt/my_dir。但只要调整路径写法,就能轻松保留目录本身。
内容的提问来源于stack exchange,提问作者TerekC
相关产品推荐
相关产品推荐

