Supervisord无法显示通过docker查看的进程的标准输出

7
尝试在Docker中使用supervisor捕获我的应用程序日志。
这是我的supervisord.conf文件:
[supervisord]
logfile=/dev/null
nodaemon=true

[program:autofs]
command=automount -f
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0

[program:split-pdf]
command=bin/split-pdf-server
directory=/root/split-pdf
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0

启动容器后,一切正常,我可以看到我的应用程序运行的结果(它在网络共享上创建PDF文件)。

但是日志中没有显示我的应用程序的输出:

015-07-02 00:39:26,119 CRIT Supervisor running as root (no user in config file)
2015-07-02 00:39:26,124 INFO supervisord started with pid 5
2015-07-02 00:39:27,127 INFO spawned: 'split-pdf' with pid 8
2015-07-02 00:39:27,130 INFO spawned: 'autofs' with pid 9
2015-07-02 00:39:28,132 INFO success: split-pdf entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2015-07-02 00:39:28,132 INFO success: autofs entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

当我连接到Docker容器时,这是唯一的输出。

我使用的是Ubuntu 15.04 Docker 1.7.0。

这不是这个问题的重复,因为我在一个容器中运行了多个进程。


你能尝试修改stdout_logfile=/tmp/autofs.log和stdout_logfile=/tmp/split-pdf.log的设置,然后重新构建/启动,只是为了测试一下吗? - user2915097
2个回答

4

在Docker容器中使用supervisord! - Denis SkS

3

事实证明一切都能正常工作,但有些延迟。

当我尝试为某个产生更多日志消息的其他应用程序创建容器时,消息开始出现在日志文件中,但有延迟。

我最初测试的第一个应用程序每个任务只有2行日志记录,我猜这里需要填充某种缓冲区才能开始刷新到日志文件中。


我有同样的问题;需要恰好4096字节的日志数据,才会显示出来。 - cweiske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接