Ich fange gerade mit Docker an und versuche jetzt herauszufinden, wie ich meine erste dockerisierte Apache 2 / PHP-Umgebung einrichten kann. Bisher habe ich vollständige Linux-VMs verwendet, bei denen ich Protokolldateien verwendet habe, die in / var / log / apache2 geschrieben wurden, und dann "logrotate" verwendet habe, um jeden Tag auf eine neue Datei zu springen.
Protokolldateien wurden hauptsächlich zur sofortigen Fehlererkennung (dh Anmeldung am Server und weniger zum Öffnen der aktuellen Dateien access.log und error.log) und für fail2ban verwendet.
Wenn ich richtig liege, ist dies in einer Docker-Umgebung nicht praktikabel - hauptsächlich, weil Sie sich normalerweise nicht bei Containern anmelden können, um die Protokolle anzuzeigen. Auch Protokolle gehen verloren, wenn der Container entfernt wird.
Also: Welche Methode wird in dieser Situation am häufigsten verwendet, um mit /emulate / replace access.log / error.log zu arbeiten? Was sind gemeinsame Lösungen für Produktions- und Entwicklungsumgebungen?
Bisher habe ich die Idee , eine NFS-Freigabe zu verwenden (die langsam ist und möglicherweise zu Dateikonflikten führt , wenn man nicht aufpasst) und Logstash (nicht sicher, ob es sich für kleinere Sites oder sogar Entwicklungsumgebungen lohnt und praktikabel ist?), Aber ich bin mir sicher, dass es kluge Leute sind haben sich bessere lösungen ausgedacht?
Ich bin mir nicht sicher, ob es einen Unterschied macht, aber momentan basiere ich mein Docker-Image auf PHP: 5.6-Apache .
docker attach <container name>
ist dies der beste Weg, um stdout von Ihrem Container aus zu sehen. Aber bitte beachten Sie, dass, wenn Sie Strg + D oder Strg + C tun, es Ihre laufende Aufgabe BEENDET (Sigkill). Sie müssen es also ordnungsgemäß mit der Escape-Taste lösenctrl+p+q
. Wenn Sie nur in Ihren Container schälen möchten, bevorzuge ich die Verwendung desexec
obigen Befehls.