我正在尝试使用谷歌的debian图像(google/debian:wheezy)首次构建一个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或以其他方式确保相同的事情.您可以查看此答案的某些选项.
[编辑]
我创建了一个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
这是一个示例构建和运行会话:
$ docker build -t tomcat7-test . $ docker run -d -p 8080:8080 tomcat7-test
现在你应该能够看到tomcat的"它的工作原理!" 页面上http://localhost:8080/