Docker:如何将文件从容器中的一个文件夹复制到另一个文件夹?

我想将我编译的war文件复制到Docker容器中的tomcat部署文件夹中。 由于COPYADD处理文件从主机移动到容器,我试过了

 RUN mv /tmp/projects/myproject/target/myproject.war /usr/local/tomcat/webapps/ 

作为对这个问题的答案的修改。 但是我得到错误

 mv: cannot stat ΓÇÿ/tmp/projects/myproject/target/myproject.warΓÇÖ: No such file or directory 

我怎样才能从一个文件夹复制到另一个在同一个容器中?

更好的解决scheme是使用卷来绑定Docker容器中的单个war文件,就像这里所做的那样。

为什么你的命令失败

您正在运行的命令尝试访问dockerfile上下文无关的文件。 当你使用docker build .生成图像docker build . 守护进程向构build器发送context ,在构build期间只有这些文件是可访问的。 在docker build . 上下文是. ,当前目录。 因此,它将无法访问/tmp/projects/myproject/target/myproject.war

从容器内复制

另一种select是在容器内进行复制。 首先使用卷来装载容器内的本地文件夹,然后使用docker exec -it <container_name> bash进入docker exec -it <container_name> bash ,然后复制所需的文件。

build议

但是,我仍然强烈推荐使用

 docker run -v "/tmp/projects/myproject/target/myproject.war:/usr/local/tomcat/webapps/myproject.war" <image_name>