Docker容器只能进入守护模式:我运行catalina.sh来启动tomcat。
但问题是我的日志不会出现在catalina.out中。
我可以查看`docker日志,但这肯定不能在生产环境中运行。
我想问一下,在生产环境中,如何在不停止容器的情况下将Tomcat日志存储在文档中?
发布于 2016-06-28 14:45:57
如果你看一下官方的tomcat docker image,它会运行
CMD ["catalina.sh", "run"]这对starts tomcat in the foreground, displaying the logs on the console来说已经足够了。
但是,正如您所说,这可能不会填充到catalina.out中。
CMD service tomcat start && tail -f /var/lib/tomcat/logs/catalina.out发布于 2016-06-28 19:51:28
在this (关闭主题)问题中有一些选项可以让tomcat日志在前台运行。
但是为了回答您的实际问题,docker logs命令是从容器中获取日志的常用方法。您还可以在主机上找到它们,因为它们位于一个文件中。
但最好的方法是使用外部日志记录服务来收集和聚合日志,这样您就不必登录到生产服务器。Logentries就是一个例子(尽管它远不完美)。Splunk是另一个。Docker logging drivers docs可能会有所帮助。
发布于 2016-06-28 15:23:58
您需要在docker容器中的前台运行一个进程,才能让容器运行。
我对我所有的docker图像都使用了hack。使用以下代码创建脚本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"]https://stackoverflow.com/questions/38068719
复制相似问题