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"]