2016-03-04 35 views
0

假设我有一堆装配好的war s,其中每个大约为80-100 MB。我为Tomcat创建了基于Tomcat的图像:8-jre8官方图像,基本上这些图像中的每一个都只包含tomcat及其依赖项和我的war文件。在码头集装箱内改进java web应用程序部署过程

通常,当将这些应用程序中的一个应用程序部署到服务器(tomcat)时,大概需要20-80秒,具体取决于部署应用程序的大小以及启动时必须初始化的事件数量。

在Docker容器中部署此类war时,部署过程要长两倍,例如,通常在20秒内部署的应用程序在Docker容器内需要大约60秒。

Dockerfile s为一种基本

FROM tomcat:8.0-jre8 
ENV spring.profiles.active=dev 
ADD foo.war /usr/local/tomcat/webapps/ 
COPY bar.properties /root/ 
CMD ["catalina.sh", "run"] 

我曾经尝试都运行的每个Web应用程序单独的Tomcat服务器和部署他们全部的单Tomcat服务器,但问题仍然存在。
有没有什么方法可以提高Docker容器内部网页应用的部署时间?

回答

0

您使用的是docker-machine?如果是这样,需要一些时间才能将文件发送到码头引擎,因此您无法做到这一点。出于开发目的,您可以创建另一个使用卷来同步主机和容器之间的文件的Dockerfile,这样每次决定部署时都不需要重新构建。

+0

是的,我使用码头机。我不需要经常重新部署,我使用带有远程服务器的Jrebel,它为部署时间增加了几秒钟,但仍然提供了太多的方法。顺便说一句,我还没有听说Docker卷能够将类交换到部署的Web应用程序中。 –

+0

它不是,你必须自己处理这个。有可能社区建立的机器可以做到这一点。对不起,但我无法帮助你处理那些特定于Java的问题 - 正如我所说,我很少使用Java –

+0

,重新部署不是问题,即使部署Java Web应用程序在这里也不是问题,唯一的问题是部署码头集装箱内的大型应用程序。正如我之前提到的,从Eclipse内部的cmd /向tomcat部署相同的战争需要在容器内部署一半的部署时间。 –