我第一次尝试使用来自 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/