Saya memiliki php-fpm dalam wadah docker dan di Dockerfile
Saya mengedit file konfigurasi fpm (/etc/php5/fpm/pool.d/www.conf
) untuk mengatur log akses untuk pergi ke /var/log/fpm-access.log
dan log kesalahan untuk pergi ke /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
Ini berfungsi dengan baik-saya bisa memasukkan shell ke dalam wadah untuk melihat log. Tapi... ini bukan praktik terbaik.
Masalahnya adalah ketika saya mencoba menggunakan docker Log collector - Saya perlu php-fpm untuk masuk ke stdout atau stderr sehingga docker dapat menangkapnya dan memberikannya ke docker logs
perintah.
Saya mencoba melakukan ini di Dockerfile
(yang merupakan ide saya disalin dari gambar docker nginx resmi):
# 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
Ini tidak berfungsi - tidak ada log akses yang terlihat dari docker logs
- Saya mencoba untuk mencari tahu mengapa? Apakah ada orang lain yang menggunakan fpm di docker yang berhasil membuat logging berfungsi ke docker Log collector?