我正在将一个项目打包到docker jetty 图像中,并且尝试访问日志,但没有日志。

Docker文件

FROM jetty:9.2.10
MAINTAINER Me "[email protected]"

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

EXPOSE 8080

Bash脚本启动docker镜像:
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

图像正在运行,但是在/var/log中没有看到任何 jetty 日志。

我尝试了docker run -it jetty bash,但也没有在/var/log中看到任何 jetty 记录。

我是否缺少制作 jetty 输出日志的参数,或者是否将其输出到/var/log/jetty以外的其他地方?

最佳答案

为什么看不到日志

2件事要注意:

  • 运行docker run -it jetty bash将启动一个新容器,而不是将您连接到现有的守护程序容器。
  • 它将调用bash而不是在该容器中启动 jetty ,因此它不会帮助您从任何一个容器中获取日志。

  • 因此,此交互式容器在任何情况下都不会对您有帮助。

    但是也...

    无论如何,JettyLogs被禁用

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

    如果查看jetty:9.2.10 Dockerfile,您将看到以下行:
    && sed -i '/jetty-logging/d' etc/jetty.conf \
    

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

    那该怎么办呢?

    使用docker logs读取日志

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

    完成此操作后:
    docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest
    

    您可以简单地做到这一点:
    docker logs abc
    

    并受到类似于以下内容的欢迎:
    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
    

    使用docker help logs获取更多详细信息。

    定制

    显然,您的另一个选择是还原Jetty的默认Dockerfile正在执行的操作,或者创建自己的Docker化Jetty。

    关于jetty - jetty 化 jetty 在哪里存储日志?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30259662/

    10-16 16:56