tomcat7 - Docker Tomcat7容器并非总是正确启动

标签 tomcat7 docker

我正在使用Docker做一些测试,但我无法启动tomcat7容器,它有时会正确启动,有时却无法正确启动。这是几次尝试的例子

fred@fred-Latitude-E6520:~/docker/test2$ docker.io run  tomcat7
 * Starting Tomcat servlet engine tomcat7
   ...done.
May 04, 2014 5:31:19 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
May 04, 2014 5:31:19 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52 (Ubuntu)
May 04, 2014 5:31:19 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOT
May 04, 2014 5:31:20 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
May 04, 2014 5:31:20 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 886 ms
fred@fred-Latitude-E6520:~/docker/test2$ docker.io run  tomcat7
 * Starting Tomcat servlet engine tomcat7
   ...fail!
fred@fred-Latitude-E6520:~/docker/test2$ docker.io run  tomcat7
 * Starting Tomcat servlet engine tomcat7
   ...fail!
fred@fred-Latitude-E6520:~/docker/test2$ docker.io run  tomcat7
 * Starting Tomcat servlet engine tomcat7
   ...done.
May 04, 2014 5:32:04 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
May 04, 2014 5:32:04 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52 (Ubuntu)
May 04, 2014 5:32:04 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOT
May 04, 2014 5:32:05 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
May 04, 2014 5:32:05 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 833 ms

我的Dockerfile:
FROM ubuntu:14.04
# Update Ubuntu
RUN apt-get update && apt-get -y upgrade
# Add oracle java 7 repository
RUN apt-get -y install software-properties-common
RUN add-apt-repository ppa:webupd8team/java
RUN apt-get -y update
# Accept the Oracle Java license
RUN echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 boolean true" | debconf-set-selections
# Install Oracle Java
RUN apt-get -y install oracle-java7-installer
# Install tomcat
RUN apt-get -y install tomcat7
RUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle" >> /etc/default/tomcat7
EXPOSE 8080
# Start Tomcat, after starting Tomcat the container will stop. So use a 'trick' to keep it running.
CMD service tomcat7 start && tail -f /var/log/tomcat7/catalina.out

当它失败时,我怎么知道出了什么问题?

Docker启动是否存在某种超时?如果我的容器没有在x秒内启动,那么Doc​​ker是否认为它已失败?

最佳答案

如果失败,请执行以下操作:

docker logs $(docker -q -a -l)

那会告诉你为什么它失败了。

我认为问题可能是tomcat不在前台运行,因此您的docker容器结束了,您可能想尝试在 super 用户下运行tomcat并放入:
CMD ["supervisord", "-n"]

作为您的命令。

这将告诉主管在前台运行,它将为您运行tomcat。您可以通过快速Google找到很多tomcat主管示例conf。这应该很容易做到。

编辑:

或者,使用以下命令在前台运行tomcat
tomcat/bin/catalina.sh run

并且应该具有相同的影响,因此您的cmd如下所示:
CMD ["<path/to/tomcat>/bin/catalina.sh", "run"]

希望这可以帮助

关于tomcat7 - Docker Tomcat7容器并非总是正确启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23459448/

相关文章:

java - tomcat 在 RedHat 7 上没有写权限/usr/share/tomcat

Tomcat 给出相同的响应

amazon-web-services - 如何使我的AWS EKS Kubernetes集群公开可见?

docker - 无法通过 Docker 驱动程序在 Minikube 上使用 GPU

python - 如何限制从 python 脚本调用、在 docker 容器中运行的 ffmpeg 的资源?

docker - 打开 docker 快速启动终端时出错,有人可以看看吗

java - Tomcat 7 与 Memcached session 管理器

Eclipse 3.7 (Indigo) + Tomcat7 --- 无法使用所选类型创建服务器

docker - VSCode/Intellij 中 docker 容器中 Tomcat/Wildfly 服务器的远程调试

java - Apache Tomcat、压力测试 Web 应用程序