도커 컨테이너에 php-fpm이 있고 액세스 로그를 설정 하고 오류 로그를 설정 Dockerfile
하려면 fpm 구성 파일 ( /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
이것은 잘 작동합니다-컨테이너에 쉘을 가져 와서 로그를 볼 수 있습니다. 그러나 ... 그것은 최선의 방법이 아닙니다.
도커 로그 수집기 를 사용하려고 할 때 문제가 발생합니다 .docker 가 stdout 또는 stderr에 기록하려면 php-fpm이 필요합니다 docker logs
.
나는 이것을 시도했다 Dockerfile
( 공식 nginx docker image 에서 복사 한 아이디어 ) :
# 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
이유를 알아 내려고 노력하고 있습니까? 도커에서 fpm을 사용하는 다른 사람이 도커 로그 수집기에 로깅 작업을 수행 했습니까?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
하고/dev/stdout
및/dev/stderr
변형. 기억하는 것이 더 쉬울 수 있습니다/dev/stdin
.