У меня есть php-fpm в контейнере docker и в Dockerfile
Я редактирую конфигурационный файл fpm (/etc/php5/fpm/pool.d/www.conf
), чтобы настроить журналы доступа для перехода к /var/log/fpm-access.log
и журналы ошибок, чтобы перейти к /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
Это работает нормально - я могу запустить оболочку в контейнер, чтобы просмотреть журналы. Но... это не лучшая практика.
Проблема в том, что когда я пытаюсь использовать сборщик журналов docker - Мне нужен php-fpm для входа в stdout или stderr, чтобы docker мог захватить их и предоставить в docker logs
команда.
Я пытался сделать это в Dockerfile
(это идея, которую я скопировал из официальное изображение nginx docker):
# 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
Это не работает - журналы доступа не отображаются из docker logs
- Я пытаюсь понять, почему? Удалось ли кому-нибудь еще, использующему fpm в docker, заставить работать сборщик журналов docker?