আমার একটি ডকার পাত্রে পিএইচপি-এফপিএম আছে এবং Dockerfile
আমি এফএমপি কনফিগারেশন ফাইলটি সম্পাদনা করতে (যা /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 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
- কেন আমি তা বোঝার চেষ্টা করছি? ডকারে এফএমপি ব্যবহার করে এমন অন্য কেউ ডকার লগ সংগ্রাহককে লগিংয়ের কাজ করতে পরিচালিত করেছেন?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
, এবং/dev/stdout
এবং/dev/stderr
রূপগুলো। ব্যবহার করা মনে রাখা সহজ হতে পারে/dev/stdin
।