我为tomcat 创建了一个 Dockerfile,这样当我运行容器时,容器会自动启动。 但是在运行容器后我检查了tomcat没有启动但容器正在运行。
FROM ubuntu
USER root
RUN mkdir -p /opt/soft/apache-tomcat-8.0.30
RUN mkdir -p /opt/soft/jdk1.8.0_65
COPY apache-tomcat-8.0.30 /opt/soft/apache-tomcat-8.0.30
COPY jdk1.8.0_65 /opt/soft/jdk1.8.0_65
ENV JAVA_HOME /opt/soft/jdk1.8.0_65
ENV PATH $PATH:$JAVA_HOME/bin:/opt/soft/apache-tomcat-8.0.30/bin
VOLUME ["/opt/soft/apache-tomcat-8.0.30/"]
EXPOSE 7070
WORKDIR /opt/soft/apache-tomcat-8.0.30/bin
CMD ["catalina.sh", "start"]
答案 0 :(得分:0)
你的CMD应该是这样的。
CMD ["catalina.sh", "run"]
由于CMD是在容器内运行的主要进程。一旦停止/退出/完成其执行,容器将被停止。所以你需要选择无限运行的CMD。这里run
将无限启动tomcat和tail
日志。
由于您没有更改tomcat的默认HTTP端口,因此需要使用8080.
EXPOSE 8080
如果您明确运行容器,则可以使用7070访问它 与
docker run -d -p 7070:8080 <tomcat_image>
如果使用docker run -d tomcat bash
启动容器,bash将成为容器中的CMD,并且将覆盖您在Dockerfile中给出的CMD。因此,您需要在不覆盖默认CMD的情况下运行容器。
docker run -d -p 7070:8080 <IMAGE> <CMD>
docker run -d -p 7070:8080 mytomcat
如果您的容器正在运行且仍然无法访问,请检查tomcat日志。