J'ai php-fpm dans un conteneur docker et dans le Dockerfile
fichier je modifie fpm config ( /etc/php5/fpm/pool.d/www.conf
) pour configurer les journaux d'accès /var/log/fpm-access.log
et les journaux d'erreurs /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
Cela fonctionne bien - je peux obtenir un shell dans le conteneur pour voir les journaux. Mais ... ce n'est pas la meilleure pratique.
Le problème est lorsque j'essaie d'utiliser le collecteur de journaux docker - j'ai besoin de php-fpm pour me connecter à stdout ou stderr afin que docker puisse les capturer et les fournir à la docker logs
commande.
J'ai essayé de le faire dans le Dockerfile
(qui est une idée que j'ai copiée à partir de l' image docker nginx officielle ):
# 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
Cela ne fonctionne pas - aucun journal d'accès n'est visible depuis docker logs
- j'essaie de comprendre pourquoi? Quelqu'un d'autre qui utilise fpm dans Docker a-t-il réussi à faire fonctionner la journalisation dans le collecteur de journaux Docker?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
,/dev/stdout
et des/dev/stderr
variantes. Pourrait être plus facile à retenir à utiliser/dev/stdin
.