Eu tenho o php-fpm em um contêiner do docker e no Dockerfile
edito o arquivo de configuração do fpm ( /etc/php5/fpm/pool.d/www.conf
) para configurar os logs de acesso para acessar /var/log/fpm-access.log
e os logs de erro para /var/log/fpm-php.www.log
:
# Do some php-fpm config
# Redirect worker stdout and stderr into main error log
# Activate the fpm access log
# Enable display errors
# Enable the error log
RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;access.log/caccess.log = /var/log/fpm-access.log' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_flag\[display_errors\]/cphp_flag[display_errors] = off' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_admin_value\[error_log\]/cphp_admin_value[error_log] = /var/log/fpm-php.www.log' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;php_admin_flag\[log_errors\]/cphp_admin_flag[log_errors] = on' /etc/php5/fpm/pool.d/www.conf
Isso funciona bem - posso colocar um shell no contêiner para ver os logs. Mas ... não é uma prática recomendada.
O problema é quando tento usar o coletor de logs do docker - preciso do php-fpm para efetuar logon no stdout ou stderr, para que o docker possa capturá-los e fornecê-los ao docker logs
comando.
Tentei fazer isso na Dockerfile
(que é uma ideia que copiei da imagem oficial do nginx docker ):
# Redirect fpm logs to stdout and stderr so they are forwarded to the docker log collector
RUN ln -sf /dev/stdout /var/log/fpm-access.log && \
ln -sf /dev/stderr /var/log/fpm-php.www.log
Isso não está funcionando - nenhum registro de acesso é visto docker logs
- eu estou tentando descobrir por quê? Alguém mais que usa o fpm no docker conseguiu fazer o log funcionar no coletor de logs do docker?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
, e/dev/stdout
e/dev/stderr
variantes. Pode ser mais fácil lembrar de usar/dev/stdin
.access.log
: github.com/docker-library/php/blob/…Observe que a configuração do inpm para a versão mais recente da imagem oficial do docker do PHP grava nos fluxos padrão:
fonte
stderr
.Registros PHP-FPM só vai aparecer STDERR - assim você pode ligar simbolicamente o
fpm.log
que/dev/stderr
se quiser.fonte