У мене є php-fpm у контейнері докера та в 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 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
Це прекрасно працює - я можу отримати оболонку в контейнер, щоб побачити журнали. Але ... це не найкраща практика.
Проблема полягає в тому, що я намагаюся використовувати колектор журналів docker - мені потрібен php-fpm для входу в stdout або stderr, щоб докер міг захопити їх і надати їх docker logs
команді.
Я спробував це зробити в Dockerfile
((це ідея, яку я скопіював з офіційного зображення докера nginx ):
# 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
Це не працює - з журналів доступу не видно docker logs
- я намагаюся зрозуміти, чому? Хто-небудь ще, хто використовує fpm у docker, встиг заставити журнал працювати до колектора журналів docker?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
, і/dev/stdout
та/dev/stderr
варіанти. Можливо, простіше запам’ятати у використанні/dev/stdin
.