As BMitch answered, that is expected COPY behaviour.
An alternative would be to ADD
the contents of a tarball.
Create the initial tarball
tar -cvf dirs.tar dirone/ dirtwo/ dirthree/
Add it to the build
FROM busybox
ADD dirs.tar /
CMD find /dirone /dirtwo /dirthree
The tarball is automatically extracted
○ →docker run c28f96eadd58
/dirone
/dirone/one
/dirtwo
/dirtwo/two
/dirthree
/dirthree/three
Note that every time you update the tar file you are invalidating the Docker build cache for that step. If you are dealing with a lot of files you might want to be smart about when you do the tar -c
. You could also use tar -u
if you can deal with files not being automatically deleted from the tarball.
[ -f dirs.tar ] && tar -uf dirs.tar something || tar -cf dirs.tar something