Tôi có php-fpm trong bộ chứa docker và trong phần Dockerfile
chỉnh sửa tệp cấu hình fpm ( /etc/php5/fpm/pool.d/www.conf
) để thiết lập nhật ký truy cập để truy cập /var/log/fpm-access.log
và nhật ký lỗi sẽ chuyển đến /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
Điều này hoạt động tốt - tôi có thể lấy một cái vỏ vào thùng chứa để xem nhật ký. Nhưng ... nó không phải là thực hành tốt nhất.
Vấn đề là khi tôi cố gắng sử dụng trình thu thập nhật ký docker - Tôi cần php-fpm để đăng nhập vào thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn để docker có thể bắt chúng và cung cấp cho chúng docker logs
lệnh.
Tôi đã cố gắng thực hiện điều này trong Dockerfile
(đó là một ý tưởng tôi đã sao chép từ hình ảnh docker nginx chính thức ):
# 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
Điều này không hoạt động - không thấy nhật ký truy cập docker logs
- Tôi đang cố gắng tìm hiểu tại sao? Có ai khác sử dụng fpm trong docker quản lý để đăng nhập làm việc với trình thu thập nhật ký docker không?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
,/dev/stdout
và/dev/stderr
các biến thể. Có thể dễ nhớ hơn để sử dụng/dev/stdin
.