在创建 Docker 容器时,要同时拥有apache2 error.log
并通过docker logs -f <my_container>
我使用一个容器,该容器运行supervisor作为入口点,并具有以下配置:
[supervisord]
nodaemon = true
environment = PLACEHOLDER=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:apache]
command=apache2ctl -DFOREGROUND
autostart=true
autorestart=true
startretries=1
startsecs=1
stderr_logfile=/var/log/apache2/error.log
stdout_logfile=/var/log/apache2/access.log
user=root
killasgroup=true
stopasgroup=true
[program:apache2-error]
command= tail -f /var/log/apache2/error.log
autostart = true
autorestart = true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:apache2-access]
command= tail -f /var/log/apache2/access.log
autostart = true
autorestart = true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
这工作正常,但我不明白为什么如果我[program:apache]
用这个替换会话这不起作用:
[program:apache]
command=apache2ctl -DFOREGROUND
autostart=true
autorestart=true
startretries=1
startsecs=1
user=root
killasgroup=true
stopasgroup=true
也就是说:如果没有明确设置stderr
和stdout
日志文件,该docker logs -f <my_container>
命令不起作用,但在容器内tail -f /var/logs/apache2/access.log
并且tail -f /var/logs/apache2/error.log
工作正常。
有人可以向我解释为什么supervisor
并且docker logs -f <my_container>
由于这种配置更改而有两种不同的作品吗?
谢谢