debian - debian 中的 Tomcat7 :wheezy Docker instance fails to start

标签 debian tomcat7 docker boot2docker

我第一次尝试使用来自 Google (google/debian:wheezy) 的 debian 镜像构建 docker 镜像,在其上设置 OpenJDK7 并尝试设置 Tomcat7。

docker pull google/debian:wheezy
docker run -i -t google/debian:wheezy bash

进入 bash 后,我安装 openjdk

apt-get update
apt-get install openjdk-7-jre

过了一会儿,我得到一个错误,我必须运行

 apt-get update --fix-missing
 apt-get install openjdk-7-jre
 apt-get install tomcat7

安装Tomcat7后,我尝试用

启动它
/etc/init.d/tomcat7 start

这给了我以下错误:

[FAIL] Starting Tomcat servlet engine: tomcat7 failed!

我显然做错了什么,我在我的 Debian Docker 安装和我的 OSX Docker 安装上得到了完全相同的行为(至少它是一致的,这有点令人印象深刻!)

查看/var/log/catalina.out 没有显示任何错误,localhost 日志也没有。

我对普通的 debian:wheezy 图像执行了相同的过程,并得到了完全相同的失败,没有任何错误。 知道我哪里搞砸了吗?

最佳答案

我尝试了您的步骤,并且能够很好地运行 tomcat。我没有遇到 apt-get 的问题,所以现在 apt-get update --fix-missing 是必需的。我什至从 init.d 脚本启动了 tomcat,它运行良好。

我的猜测是,要么是您遇到了一些网络问题,要么是 Debian 的存储库出现了一些问题,但它们已得到修复。

无论如何你应该注意,只要指定的命令在运行,容器就会在运行。这意味着,您应该在前台运行 tomcat 或以其他方式确保同样的事情。你可以查看this answer一些选项。

[编辑]

我创建了一个 Dockerfile 来测试它。在这里:

FROM google/debian:wheezy

RUN apt-get update
RUN apt-get install -y openjdk-7-jre tomcat7

ADD run.sh /root/run.sh
RUN chmod +x /root/run.sh

EXPOSE 8080

CMD ["/root/run.sh"]

这是它使用的 run.sh 脚本:

#!/bin/bash

/etc/init.d/tomcat7 start

# The container will run as long as the script is running, that's why
# we need something long-lived here
exec tail -f /var/log/tomcat7/catalina.out

这是一个示例构建和运行 session :

$ docker build -t tomcat7-test .
$ docker run -d -p 8080:8080 tomcat7-test

现在您应该能够看到 tomcat 的“It works!” http://localhost:8080/

页面

关于debian - debian 中的 Tomcat7 :wheezy Docker instance fails to start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265354/

相关文章:

c - 字符设备中的权限被拒绝

ubuntu - pbuilder 没有正确构建

java - 使用 HTTPServletRequestWrapper 包装请求参数

docker - Nifi无法使用Docker启动

c++ - 在Win7上可以正确生成的情况下如何使用SWIG在Linux上生成C#

apache - python3.2安装mod_wsgi

java - 主键的 Hibernate @GeneratedValue 空错误

linux - 内存不足错误 : define PermGen space properly in Tomcat 7 and Linux

docker - 与 Docker 的跨容器通信

php - 无法从Dockerfile正确重启PHP-FPM