Ich führe Apache2 in einem Docker-Container aus und möchte nichts auf die Festplatte schreiben, sondern Protokolle in stdout und stderr schreiben. Ich habe verschiedene Möglichkeiten gesehen, dies zu tun ( Supervisord und stdout / stderr , Apache-Zugriffsprotokoll auf stdout ), aber diese scheinen Hacks zu sein. Gibt es keine Möglichkeit, dies standardmäßig zu tun?
Um klar zu sein, möchte ich das Protokoll nicht mit einem Tail versehen, da dies dazu führt, dass Dinge auf den Datenträger im Container geschrieben werden.
apache-2.2
docker
Aronchick
quelle
quelle
Antworten:
arbeitet an Ubuntu und Centos für mich
quelle
domain.conf
Datei oder.htaccess
wenn Sie keinconf
.Wie wäre es, wenn Sie dies nach der Installation des Pakets apache2 in Ihr Dockerfile kopieren?
Angenommen, dies ist der Pfad der Protokolle. Es ist für Ubuntu 14.04 und funktioniert auch für Ubuntu 16.04.
Hinweis: Wenn Sie sicher sind, dass die symbolischen Links vorhanden sind
/dev/stdout
oder/proc/stderr
sind, können Sie auch diese verwenden. Ich bevorzuge den Pfad zur realen Datei, da diese garantiert vorhanden ist.quelle
Es wird nicht speziell nach einer Antwort gefragt, aber je nach Szenario ist es möglicherweise besser, sich überhaupt nicht bei stdout / stderr anzumelden. Leiten Sie die Protokolle einfach im JSON-Format an cat weiter. Dies würde die Notwendigkeit beseitigen, die Streams zu unterscheiden, da der JSON die Daten enthalten könnte, die zur Unterscheidung benötigt werden. zB etwas in der folgenden Richtung. Dies kann dann viel einfacher in so etwas wie Graylog aufgenommen werden
Es gibt auch ein gelf-Protokollierungsmodul, sodass Sie auf Wunsch auch direkt von Apache auf einen Graylog-Server streamen können
quelle