dockerFile构建tomcat,CMD命令未执行

在尝试使用Dockerfile将带有定制配置的Tomcat容器化时,遇到启动容器后Tomcat未自动运行的问题。经过排查,CMD命令行可能有误。通过进入容器手动执行startup.sh确认配置无误。最终发现,使用`catalina.sh run`代替CMD中的原有命令解决了问题。建议使用Dockerfile构建自定义Tomcat容器时,采用正确的catalina.sh启动命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有个公司公用的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”])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值