Saya memiliki php-fpm dalam wadah buruh pelabuhan dan di dalam Dockerfilesaya mengedit file konfigurasi fpm ( /etc/php5/fpm/pool.d/www.conf) untuk mengatur log akses untuk pergi ke /var/log/fpm-access.logdan 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 logsperintah.
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/stdoutdan/dev/stderrvarian. Mungkin lebih mudah diingat untuk digunakan/dev/stdin.