====== Docker mit NGINX, PHP-FPM und rsyslog ====== Weiterführende Links: * [[https://bobcares.com/blog/docker-nginx-php-fpm-separate-containers/]] * [[https://hub.docker.com/_/php]] * [[https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/]] Stdout to syslog: sudo docker run \ --log-driver syslog \ --log-opt syslog-address=tcp://syslog-host:1514 \ --log-opt syslog-format=rfc5424micro \ -d --name php \ -v /home/urs/docker-www:/usr/share/nginx/html \ -v /dev/log:/dev/log \ php:fpm-alpine Der Skript Pfad muss in beiden Container identisch sein (vgl. -v option) Reload NGINX aus Container: kill -s HUP 1 Reload PHP-FPM aus Container: kill -s USR2 1 ===== NGINX Konfig ===== location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 172.17.0.3:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } Für fasctcgi_pass muss die IP des php containers angegeben sein, wenn sie nicht über docker compose im gleichen Netz sind (fehlende DNS). ===== PHP-FPM Konfig ===== error_log=syslog ===== rsyslog Konfig ===== Ohne spezielle Anpassung werden aus einem Container weitergeleitete Log-Nachrichten über den unix-socket /dev/log mit dem Namen des Docker Hosts geloggt. Um dies zu umgehen muss ein dedizierter Socket eingerichtet werden. Mittels "HostName" Parameter kann der Hostname für diesen Socket definiert werden. input(type="imuxsock" HostName="docker" Socket="/dev/log-docker") [[https://www.rsyslog.com/doc/configuration/modules/imuxsock.html#read-log-data-from-jails]] Die Container müssen nach Neustart von rsyslog ebenfalls neu gestartet werden, da der Socket sonst ins leere läuft.