Mam php-fpm w kontenerze dokowanym iw Dockerfile
edytorze pliku konfiguracyjnego fpm ( /etc/php5/fpm/pool.d/www.conf
), aby skonfigurować dzienniki dostępu, aby przejść do /var/log/fpm-access.log
i dzienniki błędów, aby przejść do /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
To działa dobrze - mogę dostać powłokę do kontenera, aby zobaczyć dzienniki. Ale ... to nie jest najlepsza praktyka.
Problem polega na tym, że próbuję użyć modułu gromadzącego dzienniki dokera - potrzebuję php-fpm, aby zalogować się do standardowego wyjścia standardowego lub standardowego, aby doktor mógł je przechwycić i dostarczyć do docker logs
polecenia.
Próbowałem to zrobić w Dockerfile
(który pomysł skopiowałem z oficjalnego obrazu dokera nginx ):
# 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
To nie działa - nie widać dzienników dostępu docker logs
- Próbuję dowiedzieć się, dlaczego? Czy ktoś inny, kto korzysta z fpm w oknie dokowanym, zdołał uruchomić rejestrowanie w module gromadzącym dzienniki dokera?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
, a/dev/stdout
i/dev/stderr
warianty. Może być łatwiej zapamiętać w użyciu/dev/stdin
.