Docker 构建图像,但不构建 运行
Docker image builds, but doesn't run
我正在尝试为 libreplan, using the install instructions here 创建一个 docker 版本。 docker 文件是
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 and I have set up an automated build on the docker registry 上。存储库中包含一个示例 docker-compose.yml,它应该可以工作,但是当我尝试它时,libreplan 容器没有显示任何输出,我无法通过浏览器访问它。我根本不知道 tomcat 所以这可能是我做错了什么,但我什至不知道如何开始弄清楚是什么。有什么明显的我错过了吗?
好的,在这种情况下,您必须通过 运行在容器中安装 shell 并手动启动进程来排除故障。如果你幸运的话 docker logs containername
可能有足够的信息让你了解问题出在哪里,但通常我最终不得不按如下方式进入容器:
docker run --interactive --tty --link db:db <containerid> bash
进入后,您会想直接 运行 您的 CMD。
catalina.sh run
查看您的文件,我的第一个想法是 catalina.sh
不在您的 PATH 中或不可执行。因此,您可以通过 运行ning /bin/sh /full/path/to/catalina.sh run
或使用 Dockerfile 中的 WORKDIR 指令调整 PATH 环境变量 and/or 来解决此问题。
如果我运行你的图片:
$ 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: .
行,因为我没有足够的耐心尝试构建。
我正在尝试为 libreplan, using the install instructions here 创建一个 docker 版本。 docker 文件是
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 and I have set up an automated build on the docker registry 上。存储库中包含一个示例 docker-compose.yml,它应该可以工作,但是当我尝试它时,libreplan 容器没有显示任何输出,我无法通过浏览器访问它。我根本不知道 tomcat 所以这可能是我做错了什么,但我什至不知道如何开始弄清楚是什么。有什么明显的我错过了吗?
好的,在这种情况下,您必须通过 运行在容器中安装 shell 并手动启动进程来排除故障。如果你幸运的话 docker logs containername
可能有足够的信息让你了解问题出在哪里,但通常我最终不得不按如下方式进入容器:
docker run --interactive --tty --link db:db <containerid> bash
进入后,您会想直接 运行 您的 CMD。
catalina.sh run
查看您的文件,我的第一个想法是 catalina.sh
不在您的 PATH 中或不可执行。因此,您可以通过 运行ning /bin/sh /full/path/to/catalina.sh run
或使用 Dockerfile 中的 WORKDIR 指令调整 PATH 环境变量 and/or 来解决此问题。
如果我运行你的图片:
$ 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: .
行,因为我没有足够的耐心尝试构建。