在Docker中tomcat容器tomcat没有运行

时间:2016-05-02 18:36:56

标签: docker tomcat7 dockerfile

我为tomcat 创建了一个 Dockerfile,这样当我运行容器时,容器会自动启动。 但是在运行容器后我检查了tomcat没有启动但容器正在运行。

我的Dockerfile如下:

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"]

1 个答案:

答案 0 :(得分:0)

  1. 你的CMD应该是这样的。

    CMD ["catalina.sh", "run"]
    

    由于CMD是在容器内运行的主要进程。一旦停止/退出/完成其执行,容器将被停止。所以你需要选择无限运行的CMD。这里run将无限启动tomcat和tail日志。

  2. 由于您没有更改tomcat的默认HTTP端口,因此需要使用8080.

    EXPOSE 8080
    

    如果您明确运行容器,则可以使用7070访问它 与

    docker run -d -p 7070:8080 <tomcat_image>

  3. 如果使用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
    
  4. 如果您的容器正在运行且仍然无法访问,请检查tomcat日志。