Wie stellt man den Apache in einem Docker-Container und schreiben Sie nichts auf der Festplatte (alle Protokolle, die in STDIO / STDERR)?
Mir läuft Apache2 in einem docker-container und wollen, schreiben Sie nichts auf der Festplatte, das schreiben von logs, um stdout und stderr. Ich habe gesehen, ein paar verschiedene Möglichkeiten, dies zu tun (Supervisord und stdout/stderr, Apache access log nach stdout), aber diese scheinen, wie hacks. Gibt es keine Möglichkeit, dies standardmäßig zu tun?
Klar zu sein, möchte ich nicht tail die log, da dadurch die Dinge auf den Datenträger geschrieben werden, in den container.
Die "offizielle" version-Check-in Docker Hub (https://hub.docker.com/_/httpd/) noch auf die Platte schreiben.
Auch, was muss ich tun, um zu stoppen Apache fehlschlägt, wenn er versucht, Rollen die logs?
Eine andere Sache - im Idealfall, ich möchte wirklich, dies zu tun, ohne ein weiteres add-on. nginx kann dies trivial.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht positiv, dass das nicht Durcheinander mit httpd-logging auf allen (z.B., wenn versucht wird, suchen Sie innerhalb der Datei), aber Sie können bis symlinks aus der log-Pfade auf /dev/stdout und /dev/stderr, etwa so:
Den Eintrag Befehl, um die Vanille-httpd-container von Docker-Hub hergestellt werden könnte, so etwas wie
Gemäß der apache mailing-Liste, können Sie einfach direkt schreiben auf /dev/stdio (auf Unix-ähnlichen Systemen) so, dass nur eine regelmäßige ol' Datei-handle. Einfach! Einfügen...
https://mail-archives.apache.org/mod_mbox/httpd-users/201508.mbox/%3CCABx2=D-wdd8FYLkHMqiNOKmOaNYb-tAOB-AsSEf2p=ctd6sMdg@mail.gmail.com%3E
Senden Sie Ihre ErrorLog syslog direkt, und Sie senden können CustomLog (access-log) auf jede ausführbare Datei, liest von der Standardeingabe. Gibt es log-aggregation tools, oder Sie können wieder verwenden von syslog-w/z.B. /usr/bin/logger.
Könnten Sie versuchen, mit dem
dockerize
tool. Mit diesem könnten Sie wickeln diehttpd-foreground
Befehl und leiten Ihre log-Dateien auf stdout/stderr (kenne nicht genau die httpd-log-Datei-Pfade, die Sie einfach anpassen):Zusätzlich zu, dass Sie schnappen könnte, die Container stdout/stderr dann durch die Angabe einer syslog log-Treiber und leiten Sie Sie auf der
/var/log/syslog
log-Datei auf dem docker host:tail
unter der Haube.Config habe ich eingestellt, als aus dem Dockerfile Rezept des httpd, die Sie verwenden, sed zum anpassen der config zu ändern ErrorLog und CustomLog wie folgt:
Sehen https://github.com/docker-library/httpd/blob/master/2.4/Dockerfile (Ende der Datei)
Ich weiß, es ist eine alte Frage, aber ich hatte diese heute brauchen.
Auf eine Alpine 3.6, die folgenden Anweisungen, in
httpd.conf
arbeiten:Ich füge Sie zu meinen container auf diese Weise: