Saya memiliki php-fpm dalam wadah buruh pelabuhan dan di dalam 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 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
Ini berfungsi dengan baik - saya bisa mendapatkan shell ke dalam wadah untuk melihat log. Tapi ... itu bukan praktik terbaik.
Masalahnya adalah ketika saya mencoba menggunakan pengumpul log buruh pelabuhan - Saya perlu php-fpm untuk masuk ke stdout atau stderr sehingga buruh pelabuhan dapat menangkap mereka dan memberikannya kepada docker logs
perintah.
Saya mencoba melakukan ini di Dockerfile
(yang merupakan ide yang saya salin dari gambar nginx docker resmi ):
# 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
Ini tidak berfungsi - tidak ada log akses yang terlihat docker logs
- Saya mencoba mencari tahu mengapa? Apakah ada orang lain yang menggunakan fpm di buruh pelabuhan berhasil log masuk ke kolektor log buruh pelabuhan?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
,/dev/stdout
dan/dev/stderr
varian. Mungkin lebih mudah diingat untuk digunakan/dev/stdin
.access.log
: github.com/docker-library/php/blob/…Perhatikan bahwa dipanggang dalam konfigurasi fpm untuk versi terbaru dari gambar docker PHP fpm resmi menulis ke stream standar:
sumber
stderr
.Log PHP-FPM hanya akan muncul di STDERR - jadi Anda dapat menyinkronkan
fpm.log
ke/dev/stderr
jika Anda mau.sumber