Ho php-fpm in un contenitore finestra mobile e in Dockerfile
Modifica il file di configurazione di fpm ( /etc/php5/fpm/pool.d/www.conf
) per impostare i log di accesso su cui andare /var/log/fpm-access.log
e i log degli errori su /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
Funziona bene - Posso vedere una shell nel contenitore per vedere i registri. Ma ... non è una buona pratica.
Il problema è quando provo ad usare il raccoglitore log docker : ho bisogno di php-fpm per accedere a stdout o stderr in modo che docker possa catturarli e fornirli al docker logs
comando.
Ho provato a farlo nel Dockerfile
(che è un'idea che ho copiato dall'immagine docker nginx ufficiale ):
# 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
Non funziona - non si vede nessun registro di accesso docker logs
- Sto cercando di capire perché? Qualcun altro che utilizza fpm nella finestra mobile è riuscito a far funzionare la registrazione nel raccoglitore di registro della finestra mobile?
/dev/stdin ~ /dev/fd/0 ~ /proc/self/fd/0
, e/dev/stdout
e/dev/stderr
varianti. Potrebbe essere più facile da ricordare da usare/dev/stdin
.