Ich habe PHP-fpm in einem Docker-Container und in der Dockerfile
Ich bearbeite die FPM-Konfigurationsdatei (/etc/php5/fpm/pool.d/www.conf
), um Zugriffsprotokolle einzurichten, um zu gehen /var/log/fpm-access.log
und Fehlerprotokolle, um zu gehen /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 logRUN 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
Das funktioniert gut - ich kann eine Shell in den Container bringen, um die Protokolle anzuzeigen. Aber... es ist keine Best Practice.
Das Problem ist, wenn ich versuche, das zu verwenden docker-Protokollkollektor - Ich benötige php-fpm, um mich bei stdout oder stderr anzumelden, damit Docker sie erfassen und dem zur Verfügung stellen kann docker logs
Befehl.
Ich habe versucht, dies in der zu tun Dockerfile
(was eine Idee ist, die ich von der kopiert habe offizielles Nginx-Docker-Image):
# Redirect fpm logs to stdout and stderr so they are forwarded to the docker log collectorRUN ln -sf /dev/stdout /var/log/fpm-access.log && \ ln -sf /dev/stderr /var/log/fpm-php.www.log
Dies funktioniert nicht - es werden keine Zugriffsprotokolle angezeigt docker logs
- Ich versuche herauszufinden, warum? Hat es jemand anderes, der fpm in Docker verwendet, geschafft, die Protokollierung für den Docker-Protokollkollektor zum Laufen zu bringen?