Docker Tomcat日志问题



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

我可以看`docker日志,但这肯定不能在生产环境中运行。
我想问一下,在生产环境中,如何在文档中存储tomcat日志,而没有容器停止?

如果您查看官方的tomcat docker映像,它将运行

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

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

另一种选择是:

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

在此(主题)中有一些选项使tomcat日志在前景中运行。

但是要回答您的实际问题, docker logs 命令是从容器中获取日志的通常方法。您还可以在主机居住在文件中时在主机上找到它们。

,但最好的方法是使用外部日志记录服务来收集和汇总日志,因此您不必登录生产服务器。Logentries是一个例子(尽管它远非完美)。Splunk是另一个。Docker Logging驱动程序文档可能会有所帮助。

您可以这样覆盖CMD:

CMD bash -c "catalina.sh run | tee -a logs/catalina.out"

这样,您可以同时显示和存储日志输出。

但是,如果您甚至要存储所有错误:

CMD bash -c "catalina.sh run |& tee -a logs/catalina.out"

并将其存储成这样的音量:

docker run --rm -it -v /some/place:/usr/local/tomcat/logs yourImage

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

我使用所有Docker图像的黑客。使用以下代码创建脚本运行。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"]

最新更新