容器启动 tomcat 日志问题

141 天前
 nutting

我们现在系统部署在客户的一个云平台上,只要编写 dockerfile ,用平台制作镜像即可。背后可能是有 k8s 啥的。现在有个问题,我容器里跑 tomcat ,本来是输出 catalina.out 的,所以 dockerfile 最后一行加上 tomcat 启动后 && tail -f catalina.out,这没啥问题,平台的 web 界面也就能看见日志了。

最近要把 catalina.out 去掉,我这个需求是要彻底不输出这个文件,所以只能去掉 tail -f catalina.out ,但是这样容器就会 crashloopbak ,以前的经验是必须带这么一个 tail -f 来吊住进程,哪怕 tail -f /dev/null 也行。我这次就想 dockerfile 执行 tomcat 启动,但是把控制台的日志给我带着输出到 web 界面。这个 dockerfile 到底怎么写呢。CMD ? entrypoint ?能把手动启动 bin/startup.sh 的日志在 docker 里输出来

1117 次点击
所在节点    程序员
5 条回复
NotFoundEgg
141 天前
CMD ["catalina.sh", "run"]
这样可以前台启动 tomcat 并输出日志,用 startup.sh 是后台启动的
julyclyde
140 天前
首先你的经验就不对
用 tail-f 来吊住是错误的做法
你应该是让 java 占据前台直接 stdout/stderr 输出日志
nutting
140 天前
@julyclyde 哎,是啊,一直以为这样才行。原来是要一楼的写法,这细节,我一直是 cmd 后面没有括号引号什么的 ,而且用的 startup.sh
julyclyde
140 天前
@nutting 你如果用 shell 的话,在停止的时候可能还会出问题
需要用 exec 而非 call
NotFoundEgg
140 天前
@nutting tomcat 官方镜像最后就是 CMD ,详见: https://github.com/docker-library/tomcat/blob/master/Dockerfile.template

如果你的 dockerfile 是 FROM 的 tomcat ,那其实不用自己再写一遍 CMD ["catalina.sh", "run"]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1125934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX