docker tomcat日志问题

Docker容器只能守护进程模式:我运行catalina.sh来启动tomcat。
但问题是我的日志不会出现在catalina.out

我可以看看docker日志,但是这当然不能在生产环境中运行。
我想问一下,在生产环境中,我可以如何将Tomcat日志存储在文档中而不会停止容器?

如果你看看官方的tomcat docker镜像 ,它会运行

 CMD ["catalina.sh", "run"] 

这足以在前台启动tomcat,在控制台上显示日志 。
但是,正如你所说,这可能不会填充catalina.out。

另一种select是 :

 CMD service tomcat start && tail -f /var/lib/tomcat/logs/catalina.out 

在这个 (离题)问题有选项,使tomcat日志运行在前台。

但是要回答您的实际问题, docker logs命令是从容器中获取日志的常用方法。 您也可以在主机上find它们,因为它们位于文件中。

但最好的方法是使用外部日志logging服务来收集和聚合日志,这样就不必login到生产服务器。 Logentries就是一个例子(虽然远非完美)。 Splunk是另一个。 Docker日志驱动程序文档可能会有所帮助。

您需要在Docker容器的前台运行一个进程才能使容器运行。

我用我所有的docker图像黑客。 用下面的代码创build一个脚本run.sh

 #!/bin/sh service tomcat start tail -f /dev/null 

请确保在docker中运行run.sh文件之前,更改权限。

添加到Dockerfile将

 COPY run.sh ./run.sh RUN chmod 755 ./run.sh CMD ["./run.sh"]