Nginx: como usar o coletor de log do docker quando o nginx está sendo executado em supervisord

A imagem oficial do docker nginx (Dockerfile) usa o seguinte truque para entregar seus logs para stdout e stderr para que eles sejam capturados pelo coletor de log do docker e visíveis usando docker logs <container-name>:

# forward request and error logs to docker log collectorRUN ln -sf /dev/stdout /var/log/nginx/access.logRUN ln -sf /dev/stderr /var/log/nginx/error.log

Eu quero fazer o mesmo, no entanto eu tenho supervisord como PID 1 no meu contêiner e supervisiona o processo nginx e captura stdout e stderr e o coloca em seu próprio arquivo de log. Portanto, os logs não chegam ao coletor de log do docker.

Aqui está o bloco relevante no meu supervisord.conf

[program:nginx]command=/usr/sbin/nginx -g "daemon off;"priority=990; NOTE: We do not want to redirect stdout and stderr of a nginx process to a logfile because we want docker log collector to get them.stdout_logfile= NOT SURE WHAT TO PUT HERE?stderr_logfile= NOT SURE WHAT TO PUT HERE?username=www-dataautorestart=true

Os documentos do supervisord são ótimos (http://supervisord.org/configuration.html) mas para stdout_logfile eles não me dão a resposta que eu preciso-ou seja, Como faço para configurar o supervisord para não interceptar um stdout / stderr de processos ( ou para capturar em um arquivo de log, mas também encaminhar para stdout / stderr normal).

O que eu já tentei:

  1. stdout_logfile=NONE - Não obtenha logs nem stdout ou para um arquivo
  2. stdout_logfile=/var/log/supervisor/%(program_name)s.log - Obter logs para um arquivo, mas não stdout.
  3. Não definir stdout_logfile - Obter logs para um arquivo nomeado aleatoriamente, mas não stdout.
  4. stdout_logfile=/dev/stdout - Supervisord dá um erro:

    >A maioria dos usuários do Windows não tem acesso a um sistema de gerenciamento de arquivos, mas a maioria dos usuários do Windows não tem acesso a um sistema de gerenciamento de arquivos.por exemplo, se você está procurando por um aplicativo, você pode ter certeza de que este aplicativo é compatível com todos os seus dispositivos.loggers.py/info/273] [/usr/lib/python2.7 / seguidores-pacotes/ supervisor / - loggers.py/log/291] [/usr/lib/python2.7 / seguidores-pacotes/ supervisor / - loggers.py/bought/186] [/usr/lib/python2.7 / seguidores-pacotes/ supervisor / - loggers.py/doRollover/195])

O Illegal seek o erro é causado pelo código no supervisord que é responsável pela rotação do arquivo de log. Para redirecionar para stdout / stderr, você deve desativar a rotação do arquivo de log, conforme explicado aqui:

http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html