使用docker在supervisord中loggingstdout

我有几个需要运行supervisord的docker集装箱。

但是,我没有设法让主pipe捕获日志并将其输出到标准输出。 看起来,主pipe没有捕获他们的输出,并以与docker工作良好的方式吐出。 我很喜欢它前面的进程名称或东西。

我该怎么做? 从主pipe手册中不清楚。

除了主pipe,我还会考虑一个不同的工具。 它的缺点之一是它是用python编写的,它真的使Docker容器膨胀起来。 除了你的解决scheme,如果你有一个,是否有更好的工具与docker工作更好?

我find了一个使用runit的解决scheme。

runit的设置只是稍微复杂一点,但不是很明显,而且日志function是开箱即用的。

基本上你只需要安装runit apt-get install runit 。 然后创build一个运行文件复制到/ etc / service / {servicename} / run运行文件只是一个bash脚本,exec是你服务的名字。 它的stdout被自动捕获。

我遇到的麻烦是使nginx日志stdout和stderr。 我遵循了一个把事情写到nginx.conf的配方。 它没有工作。 有效的只是:

 ln -sf /dev/stdout /var/log/nginx/access.log ln -sf /dev/stderr /var/log/nginx/error.log