Docker:在执行cp之前删除并创build文件夹

是否有可能创build一个文件夹,如果它不存在之前复制它?

docker cp /opt/project/build/core/bundle target_container:/opt/project/build/core 

通常只有/opt/project/build/ existing。

我想要做的是复制文件bundle并replace现有的文件夹及其文件,如果它是存在的。 如果不存在,则应创build文件夹core/bundle并复制文件。

docker exec将允许您在容器中运行命令。

 docker exec $target_container mkdir -p /opt/project/build/core docker cp /opt/project/build/core/bundle $target_container:/opt/project/build/core/ 

注意尾部/cp告诉docker将源复制到core/目录而不是命名bundle – > core

更换

如果想完全“replace”现有的bundle目录,而不是用cp添加文件,那么你需要从删除开始。

 docker exec $target_container sh -c \ 'rm -f /opt/project/build/core && mkdir -p /opt/project/build/core' 

尽pipe不那么直观的select,

 tar xf - <dir> | docker exec -i <container> tar xf -