मेरे पास एक docker कंटेनर में php-fpm है और Dockerfile
मैं जाने के लिए fpm config फाइल ( /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
यह ठीक काम करता है - मुझे लॉग देखने के लिए कंटेनर में एक शेल मिल सकता है। लेकिन ... यह सबसे अच्छा अभ्यास नहीं है।
समस्या यह है कि जब मैं डॉक लॉग कलेक्टर का उपयोग करने की कोशिश करता हूं - मुझे stdout या stderr में लॉग इन करने के लिए php-fpm की आवश्यकता होती है ताकि docker उन्हें पकड़ सके और उन्हें docker logs
कमांड प्रदान कर सके ।
मैंने ऐसा करने की कोशिश की Dockerfile
(जो कि एक विचार है जिसे मैंने आधिकारिक नग्नेक्स डॉकटर छवि से कॉपी किया है ):
# 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
- मैं यह पता लगाने की कोशिश कर रहा हूं कि क्यों? क्या किसी और ने जो dopm में fpm का उपयोग किया है, वह docker log कलेक्टर को लॉगिंग कार्य करने के लिए प्रबंधित करता है?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
,/dev/stdout
और/dev/stderr
वेरिएंट के लिए संभव है । उपयोग करने के लिए याद रखना आसान हो सकता है/dev/stdin
।