用一个命令复制多个目录
有没有办法在一个命令中复制多个目录,以减less层数? 例如,而不是:
COPY dirone ./dirone COPY dirtwo ./dirtwo COPY dirthree ./dirthree
我想要做:
COPY dirone/ dirtwo/ dirthree/ ./
但是,这复制目录的内容 …但我想复制目录本身 。
这是copy命令的logging行为:
如果
<src>
是一个目录,则复制该目录的全部内容,包括文件系统元数据。注意:目录本身不被复制,只是它的内容。
我可以build议的最佳解决方法是更改您的生成文件夹中的目录布局,将三个文件夹移动到一个父文件夹下,并添加父项。
正如BMitch回答的那样 ,预计COPY的行为。
另一种方法是ADD
tarball的内容。
创build最初的tarball
tar -cvf dirs.tar dirone/ dirtwo/ dirthree/
将其添加到构build
FROM busybox ADD dirs.tar / CMD find /dirone /dirtwo /dirthree
压缩包会自动提取
○ →docker run c28f96eadd58 /dirone /dirone/one /dirtwo /dirtwo/two /dirthree /dirthree/three
请注意 ,每次更新tar文件时,都会使该步骤的Docker构buildcaching失效。 如果你正在处理大量的文件,你可能想要在做tar -c
时候很聪明。 你也可以使用tar -u
如果你可以处理不被自动从tarball中删除的文件。
[ -f dirs.tar ] && tar -uf dirs.tar something || tar -cf dirs.tar something