我有个公司公用的tomcat上面已经部署了项目,想用dockfile制作成容器,练练手.遇到了一个问题.
在用dockerfile构建完成后,启动了容器,但是发现tomcat没有自动启动.
(公司的tomcat中已经修改了很多的配置,添加了很多东西,所以没有用docker的官方tomcat )
以下是当时我写的Dockefile文件
(我在写这个文件时,已经在虚拟机上安装了一遍,因为使用的是yum安装的,所以jdk的路径在已经知道,就先在tomcat中修改了, 所以这个Dockefile文件里的步骤才会这么少.)
FROM centos:7
COPY . /usr/local
RUN yum install java-1.6.0-openjdk-devel.x86_64 -y
EXPOSE 8080
CMD ["sh","/usr/local/tomcat/bin/startup.sh"]
使用这个Dockefile构建完成后,启动容器后,tomcat没有正常运行.
docker run -d -p 8080:8080 --name tomcat_de tomcat
在构建的过程中,并没有发生任何异常,启动也没有错误.
我使用attach命令进入容器后. 执行了startup.sh文件
docker attach tomcat_de
项目能够启动,并正常运行. 这就证明了我在构建过程中基本没有问题,可能是Dockefile文件中CMD命令写的有点问题,使tomcat没有正常启动.
既然知道是CMD命令写的有点问题,我就改了改,我看了官网的CMD命令简绍,试了很多CMD命令都没有成功.最后我上了Docker hub看了看官网的tomcat,发现docker hub官网上有这个一个简绍.
CMD ["/usr/local/tomcat/bin/startup.sh","run"]
CMD sh /usr/local/tomcat/bin/startup.sh
....
发现docker hub官网上,使用 catalina.sh命令启动了. 我就赶紧试了试.
发现改用catalina.sh后果然好使了.
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
下次如果大家需要自己构建tomcat时,记得使用catalina.sh文件 执行(CMD [“catalina.sh”, “run”])