【发布时间】:2017-05-17 00:21:25
【问题描述】:
我是使用 Docker 容器化应用程序的新手。我可以部署一个包含战争文件的容器。战争基本上是一个 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
【问题讨论】:
-
在运行
docker run时去掉-d选项。检查日志并查看它正在尝试执行的操作,这可能需要 4~5 分钟。 -
您的问题可能与这篇博文有关:blog.georgovassilis.com/2015/09/13/…
-
谢谢塞缪尔。我刚刚删除了 -d 现在只需要 8 秒!!!!!!
-
不确定
-d是如何解决您的问题的。我之前的意图是让你的容器不在后台运行,这样你就可以看到日志,这会告诉你花费这么长时间的步骤。顺便说一句,您使用 Dockerfile 来构建映像,然后 docker run 将映像转换为容器的实例。从那里删除东西只会加快构建步骤。 -
你是对的塞缪尔,那 -d 并没有解决我的问题。事实上,今天我运行了 docker 命令,响应最终用户请求需要很长时间。尝试 -d,表明以下步骤(WAR 部署)非常耗时:“May 18, 2017 8:07:56 PM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive /usr/local/ tomcat/webapps/surrogate-V1.war”我什至尝试了您建议的链接中的解决方案,但没有成功。你有什么建议吗?
标签: java docker containers war