如何加速Docker容器启动时间?

时间:2017-05-17 00:21:26

标签: java docker containers war

我是使用Docker容纳应用程序的新手。我可以部署包含war文件的容器。战争基本上是一个JAVA Web应用程序/ servlet,它在收到最终用户的请求后发回一个视频文件。使用docker的应用程序部署是成功的,应用程序正常工作。但是我的启动时间有些问题。

从我通过命令docker run -it -d -p 8080:8080 surrogate创建容器的那一刻起,容器需要大约5-6分钟才能运行,这意味着容器生命周期的前5-6分钟,它不是响应最终用户请求,之后它工作正常。有没有办法加快启动时间?

Dockerfile包括:

FROM tomcat:7.0.72-jre7
ADD surrogate-V1.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
WORKDIR "/usr/local/tomcat/"
RUN wget https://www.dropbox.com/s/1r8awydc05ra8wh/a.mp4?dl=1
RUN cp a.mp4\?dl\=1 lego.mp4 

1 个答案:

答案 0 :(得分:0)

(代表OP发布)

首先在" docker run"中删除-d;命令查看后台发生了什么。我注意到战争部署阶段耗时很长(大约15-20分钟!!!)

我的理由是,Dockerfile中的tomcat版本与我将Web应用程序导出为WAR的环境中的Tomcat版本不同。 (如何检查JRE版本:在终端输入:JAVA -version,检查Tomcat版本:从eclipse,当您导出时,它显示版本)。

在我的Dockerfile案例中,我有:

FROM tomcat:7.0.72-jre7

我把它改为:

FROM tomcat:6.0-jre7

现在只需不到10秒!

简而言之,确保Dockerfile中的Tomcat版本和JRE版本与将Java Web应用程序导出为WAR的环境相同。