Docker COPY并保持目录

需要复制我的Dockerfile中的多个目录。 目前,我正在做:

COPY dir1 /opt/dir1 COPY dir2 /opt/dir2 COPY dir3 /opt/dir3 

我宁愿将它们合并成一个单一的声明,一次性指定所有的来源。 但是,这样的内容被复制,我失去了dir1dir2dir3结构:

 COPY dir1 dir2 dir3 /opt/ 

同样在这种情况下:

 COPY dir1/ dir2/ dir3/ /opt/ 

有一种方法可以用一条线来实现吗?

您应该考虑ADD而不是COPY :请参阅Dockerfile ADD

如果<src>是一个识别压缩格式的本地tar档案(identity,gzip,bzip2或xz),那么它就被解压缩为一个目录。

这意味着你可以把你的docker构build步骤包装到脚本中,首先将tar -cvf dirs.tar dir1 dir2 dir3

然后,您的Dockerfile可以ADD dirs.tar :您将在图像中find您的文件夹。

另请参阅Dockerfile最佳实践: ADDCOPY