rotation de logging nginx en contenedor con logrotate

Nginx no tiene rotation de logging nativa, por lo que se requiere una herramienta externa, como logrotate. Nginx presenta un desafío en el sentido de que los loggings deben ser reabiertos después de la rotation. Puede enviar una señal USR1 si el pid está disponible en / var / run.

Pero cuando se ejecuta en un contenedor acoplable, el file pid falta en / var / run (y el pid en realidad pertenece al host, ya que técnicamente es un process host).

Si no vuelve a abrir los loggings, nginx no registra nada en absoluto, aunque continúa funcionando como server web, proxy inverso, etc.

Puede get la identificación del process desde el atributo Pid usando docker inspeccionar y usar kill -USR1 {pid} para que nginx vuelva a abrir los loggings.

Aquí está el file /etc/logrotate.d/nginx que creé:

 /var/log/nginx/access.log { size 2M rotate 10 missingok notifempty compress delaycompress postrotate docker inspect -f '{{ .State.Pid }}' nginx | xargs kill -USR1 endscript }