【问题标题】:Tomcat not running on docker imageTomcat 未在 docker 映像上运行
【发布时间】:2014-08-15 11:58:03
【问题描述】:

我通过命令使用Dockerfile在镜像上安装了tomcat7:

MAINTAINER Abc Xyz <abc@xyz.com>
RUN apt-get -qq update
RUN apt-get -y install openjdk-7-jre
RUN apt-get -y install tomcat7 
EXPOSE 8080

当我构建映像并尝试运行以下命令时:

sudo docker run -d -P abcxyz/tomcat service tomcat7 start

我看不到它映射到的端口上的 tomcat 页面(比如 49153)... 当我在图像中作为 bash 运行并尝试时:

service tomcat7 start

然后它也无法启动tomcat7服务器。 我认为问题在于图像无法启动tomcat7服务器。而且我听说 docker images 不能运行任何 upstart 服务,虽然我不确定。

有人知道如何解决吗? 谢谢。

【问题讨论】:

标签: tomcat7 docker ubuntu-10.04


【解决方案1】:

将命令改为

<path/to/tomcat>/bin/cataline.sh run

这将使tomcat在前台运行

【讨论】:

  • 我会试试然后回来:)
  • Docker 文件中的命令应该是 ENTRYPOINT [ "/usr/share/tomcat7/bin/catalina.sh", "run" ]
  • 刚刚在 Ubuntu 14.04 上测试过。在“/usr/share/tomcat7/bin/catalina.sh run”之前,您需要“export CATALINA_BASE=/var/lib/tomcat7”。它部署并提供了一个简单的 web 应用程序。
【解决方案2】:

只需添加:

--privileged=true

参数与 docker run 命令。 Tomcat 需要扩展权限才能运行。

那里有更多信息:https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration

【讨论】:

    【解决方案3】:

    它不工作,因为只要您指定的程序正在运行,容器就会工作。 service tomcat7 start 命令立即结束。

    【讨论】:

    • 所以在链接给出的文件中......最后一行是做什么的?是否让它不断运行??
    • 没错。 tail -f 将监视文件的更改并在它们可用时打印它们。还有许多其他选择。喜欢while true; do sleep 1d; done
    【解决方案4】:

    你应该像这样运行它:

    docker run -dP abcxyz/tomcat catalina.sh run
    

    只要命令正在执行,这将使容器运行。您运行它的方式是将服务作为后台进程。

    【讨论】:

      【解决方案5】:

      使用带有 -d 开关的 docker run 以分离模式运行。所以它将在后台运行。 例如: docker run -d abcd /path/catalina.sh 运行

      【讨论】:

        猜你喜欢
        • 2020-09-29
        • 1970-01-01
        • 2020-02-13
        • 1970-01-01
        • 2017-03-05
        • 1970-01-01
        • 2021-12-02
        • 2021-04-08
        • 2021-08-22
        相关资源
        最近更新 更多