在启动期间将部署文件传递到docker容器

我想将.war应用程序部署到docker容器中,

我试图build立包含tomcat服务器和它的部署docker图像

文件,如战争和jar子,

#set the base image FROM my-base-image # author MAINTAINER elsayed # extra metadata LABEL version="1.0" LABEL description="The First Image for tomcat" #add server-files RUN mkdir -p /root/apache-tomcat-8.0.24 COPY apache-tomcat-8.0.24 /root/apache-tomcat-8.0.24 add receiver.war /root/apache-tomcat-8.0.24/webapps add common.jar /root/apache-tomcat-8.0.24/mule-libs/user/myapp add model.jar /root/apache-tomcat-8.0.24/mule-libs/user/myapp add wsdl.jar /root/apache-tomcat-8.0.24/mule-libs/user/myapp add service.jar /root/apache-tomcat-8.0.24/mule-libs/user/myapp add StatusCodes.jar /root/apache-tomcat-8.0.24/mule-libs/user/myapp RUN echo '/root/apache-tomcat-8.0.24/bin/catalina.sh run -Xms256m -Xmx1G -XX:MaxPermSize=256m -Dmule.verbose.exceptions=true -Djava.net.preferIPv4Stack=true -Dlog4j.configuration=file:/root/elsayed/server/logging/tomcat/log4j.properties -Dlog4j.debug=true -Dvericash.home=/root/elsayed -Djboss.ejb.client.properties.file.path=/root/jboss-ejb-client.properties' >> /root/apache-tomcat-8.0.24/bin/start.sh EXPOSE 9191 CMD ["/bin/bash", "/root/apache-tomcat-8.0.24/bin/start.sh"] 

我正在开发中使用它,我不断地编辑和部署应用程序很多次,所以我必须再次构buildDocker镜像,

有没有办法将.war和jar文件传入Docker容器,而不需要重新生成映像?

是的,您可以在docker run命令中添加-v /your/host/dir:/your/dir/inside/container来映射卷。 这样,你的主机上就有一个目录在你的容器内。

然后,您可以将所需的文件复制到该目录以将其部署到容器上。 然后,如果你需要在容器中运行一个命令(例如服务重启或者其他的东西),你可以使用docker exec <containerId> <yourCommand>