【问题标题】:Docker image builds, but doesn't runDocker 映像构建,但不运行
【发布时间】:2015-05-28 16:13:05
【问题描述】:

我正在尝试使用安装说明 herelibreplan 创建一个 docker 构建。 dockerfile 是

FROM tomcat:6

RUN apt-get -yq update && apt-get -yq install \
  cutycapt \
  patch \
  postgresql-client \
  libpg-java \
  xvfb

# Prepare webapp location
RUN mkdir -p /usr/local/tomcat/webapps/libreplan
# Get WAR file
RUN wget -q -O /usr/local/tomcat/webapps/libreplan/libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.3.0.war
# Install libreplan.xml
ADD libreplan.xml /usr/local/tomcat/webapps/libreplan/libreplan.xml
# Patch the policy to include libreplan
ADD catalina.policy.patch catalina.policy.patch
RUN patch -o /usr/local/tomcat/conf/catalina.policy /usr/local/tomcat/conf/catalina.policy catalina.policy.patch

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

构建工作,但当我尝试运行它时没有做任何事情。所有代码都在github 上,我已经在docker registry 上建立了一个自动构建。 repo 中包含一个示例 docker-compose.yml,它应该可以工作,但是当我尝试它时,libreplan 容器中没有显示输出,我无法通过浏览器访问它。我根本不知道tomcat,所以这可能是我做错了,但我什至不知道如何开始弄清楚是什么。有什么明显的我遗漏的吗?

【问题讨论】:

    标签: java tomcat docker tomcat6 libreplan


    【解决方案1】:

    如果我运行你的图像:

    $ docker run --name libreplan aquavitae/libreplan
    

    我明白了:

    May 28, 2015 4:57:42 PM org.apache.catalina.core.AprLifecycleListener init
    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
    May 28, 2015 4:57:42 PM org.apache.coyote.http11.Http11Protocol init
    INFO: Initializing Coyote HTTP/1.1 on http-8080
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 387 ms
    May 28, 2015 4:57:42 PM org.apache.catalina.core.StandardService start
    INFO: Starting service Catalina
    May 28, 2015 4:57:42 PM org.apache.catalina.core.StandardEngine start
    INFO: Starting Servlet Engine: Apache Tomcat/6.0.44
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory host-manager
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory manager
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory examples
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory libreplan
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory ROOT
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory docs
    May 28, 2015 4:57:42 PM org.apache.coyote.http11.Http11Protocol start
    INFO: Starting Coyote HTTP/1.1 on http-8080
    May 28, 2015 4:57:42 PM org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    May 28, 2015 4:57:42 PM org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/12  config=null
    May 28, 2015 4:57:42 PM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 580 ms
    

    这似乎完全成功。此外,我可以抢IP 容器地址:

    $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' libreplan
    172.17.0.9
    

    然后在浏览器中打开:

    $ firefox http://172.17.0.9:8080
    

    并查看默认的 Tomcat 网页。

    所以大多数情况下它似乎有效。

    我也可以docker up 没有错误,尽管我用image: aquavitae/libreplan 替换了build: . 行,因为我没有足够的耐心来尝试构建。

    【讨论】:

    • 很奇怪,我只是尝试在本地重建并且它有效 - 可能是缓存问题。但是,实际的 webapp 似乎仍然无法访问。知道我在将它安装到 tomcat 时做错了什么吗?
    • 这更像是Tomcat的问题,我对Tomcat不是特别熟悉。
    【解决方案2】:

    好的,在这种情况下,您必须通过在容器中运行 shell 并手动启动进程来进行故障排除。如果你很幸运docker logs containername 可能有足够的信息让你了解问题所在,但通常我最终不得不按如下方式进入容器:

    docker run --interactive --tty --link db:db <containerid> bash
    

    进入后,您会想要直接运行 CMD。

    catalina.sh run
    

    查看您的文件,我的第一个想法是 catalina.sh 不在您的 PATH 中或不可执行。因此,您可以通过运行 /bin/sh /full/path/to/catalina.sh run 或调整 PATH 环境变量和/或在 Dockerfile 中使用 WORKDIR 指令来解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 2019-04-09
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多