我是使用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
答案 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的环境相同。