dockerized jetty在哪里存储它的日志?

Jan*_*ert 5 jetty docker dockerfile

我正在将一个项目打包成一个docker jetty图像,我正在尝试访问日志,但没有日志.

Dockerfile

FROM jetty:9.2.10
MAINTAINER Me "me@me.com"

ADD ./target/abc-1.0.0 /var/lib/jetty/webapps/ROOT

EXPOSE 8080
Run Code Online (Sandbox Code Playgroud)

用于启动docker镜像的Bash脚本:

docker pull me/abc
docker stop abc
docker rm abc
docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest
Run Code Online (Sandbox Code Playgroud)

图像正在运行,但我没有看到任何码头登录/var/log.

我试过了docker run -it jetty bash,但没有看到任何码头登录/var/log.

我错过了一个参数来制作码头输出日志,还是将它输出到除了/var/log/jetty

hay*_*lem 8

为什么你没有看到日志

需要注意的两点:

  1. 运行docker run -it jetty bash将启动一个新容器,而不是将您连接到现有的守护程序容器.

  2. 并且它将调用bash而不是在该容器中启动jetty,因此它无法帮助您从任一容器中获取日志.

所以这个交互式容器在任何情况下都无济于事.

但是也...

无论如何JettyLogs都被禁用了

此外,您不会在标准位置看到日志(例如,如果您尝试使用它docker exec来读取日志,或者将它们放入卷中),这很简单,因为Jetty Docker文件恰当地完全禁用了日志记录.

如果你看看码头:9.2.10 Dockerfile,你会看到这一行:

&& sed -i '/jetty-logging/d' etc/jetty.conf \
Run Code Online (Sandbox Code Playgroud)

这很好地删除了引用jetty-logging.xml默认日志记录配置的整行.

该怎么办?

用日志阅读日志 docker logs

Docker使您可以访问容器的标准输出.

你这样做之后:

docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

docker logs abc
Run Code Online (Sandbox Code Playgroud)

并且会遇到类似于此的事情:

Running Jetty: 
2015-05-15 13:33:00.729:INFO::main: Logging initialized @2295ms
2015-05-15 13:33:02.035:INFO:oejs.SetUIDListener:main: Setting umask=02
2015-05-15 13:33:02.102:INFO:oejs.SetUIDListener:main: Opened ServerConnector@73ec519{HTTP/1.1}{0.0.0.0:8080}
2015-05-15 13:33:02.102:INFO:oejs.SetUIDListener:main: Setting GID=999
2015-05-15 13:33:02.106:INFO:oejs.SetUIDListener:main: Setting UID=999
2015-05-15 13:33:02.133:INFO:oejs.Server:main: jetty-9.2.10.v20150310
2015-05-15 13:33:02.170:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/var/lib/jetty/webapps/] at interval 1
2015-05-15 13:33:02.218:INFO:oejs.ServerConnector:main: Started ServerConnector@73ec519{HTTP/1.1}{0.0.0.0:8080}
2015-05-15 13:33:02.219:INFO:oejs.Server:main: Started @3785ms
Run Code Online (Sandbox Code Playgroud)

用于docker help logs了解更多详情.

定制

显然,你的另一个选择是恢复jetty的默认Dockerfile正在做什么,或者创建你自己的dockerized Jetty.