Wie starte ich Apache2 neu, ohne den Container zu stoppen?
Ich möchte mit dem Container herumspielen und ihn anpassen, bevor ich meine Änderungen in die Dockerdatei einfüge. Ich möchte eine Erweiterung installieren und damit sie funktionieren, muss ich Apache neu starten, damit die Änderungen wirksam werden.
Dies ist die Protokolldatei über:
Attaching to dltasklight_phlaconapp_1
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | [Mon May 30 10:19:24.556154 2016] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.22 configured -- resuming normal operations
phlaconapp_1 | [Mon May 30 10:19:24.556181 2016] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
phlaconapp_1 | [Mon May 30 10:21:11.754993 2016] [mpm_prefork:notice] [pid 1] AH00169: caught SIGTERM, shutting down
dltasklight_phlaconapp_1 exited with code 0
Wenn Sie Apache als primären Dienst verwenden, um Ihren laufenden Container beizubehalten, können Sie ihn NICHT neu starten. Einfach, weil Sie das Image erstellt und die CMD damit festgelegt haben.
Der Hauptzweck einer CMD besteht darin, Standardwerte für einen ausführenden Container bereitzustellen. Diese Standardwerte können eine ausführbare Datei enthalten oder sie können die ausführbare Datei weglassen, in diesem Fall müssen Sie auch eine ENTRYPOINT-Anweisung angeben.
Versuchen Sie neu zu laden, ohne einen Dienst neu zu starten:
/etc/init.d/apache2 reload
Das habe ich letztendlich bei der Entwicklung des Dev-Stacks gemacht. Danke, dass du es geschrieben hast und +1. Ich akzeptiere diese Lösung nicht, da das Ausführen des Neuladens am Ende keine Voraussetzung war, denn wenn die Erweiterungen installiert werden, bevor der Apache startet, ist es nicht erforderlich, ihn neu zu starten.
– k0pernikus
6. Juni 2016 um 12:08 Uhr
Akzeptierte diese Antwort, da die anderen eingehenden Antworten neben den Punkt gehen. Ein Neustart war nicht erforderlich, das Neuladen der Konfiguration war erforderlich, und dies hat mir geholfen, eine richtige Docker-Datei zu erstellen.
– k0pernikus
18. Juli 2017 um 17:04 Uhr
Gut. Ich kann mich nicht erinnern, einen anderen Befehl zu haben, der nur als Apache-Konfigurationen neu gestartet wird. Dieser Befehl ist wirklich nützlich für dieses Problem:}
– Kau
18. Juli 2017 um 17:07 Uhr
Hallo @MagnoC, was ist Ihr Basis-Image von Dockerfile?
– Kau
22. Dezember 2018 um 16:26 Uhr
Meine Lösung dafür war, meine Bash-Shell in den Container zu verlassen und den Container einfach außerhalb von Docker neu zu starten. Da Apache als primärer Dienst festgelegt ist, wird dadurch auch Apache neu gestartet und der Container nicht zum Absturz gebracht.
docker restart <container>
Dieser Befehl startet den Container neu, ist aber in anderen Fällen wirklich nützlich 🙂
Das funktioniert bei mir nicht, ich denke, Sie müssen in Ihrer Antwort mehr Informationen geben. Ich erhalte die folgende Fehlermeldung, Fehlerantwort vom Daemon: Cannot kill container –signal=USR1: No such container: –signal=USR1. Ich habe darauf geachtet, den richtigen Container nach ID und Name einzugeben, beides derselbe Fehler.
– Josef Astrahan
10. Januar 2017 um 4:26 Uhr
Bitte ersetzen Sie das Zeichen vor “Signal” durch zwei Bindestriche (es wurde wahrscheinlich durch das Eingabefeld von stackoverflow automatisch korrigiert).
– gut
29. Juni 2017 um 8:19 Uhr
Ich hatte das Problem, dass es aus irgendeinem Grund nicht ausreicht, das Signal einmal zu senden, es muss zweimal gesendet werden. stackoverflow.com/questions/55262485/…
– Paul Serikow
20. März 2019 um 19:35 Uhr
Ich möchte den Container anpassen, ich muss eine Erweiterung installieren und damit sie funktionieren, muss ich Apache neu starten, damit die Änderungen wirksam werden.
Dies widerspricht dem Prinzip der unveränderlichen Infrastruktur von Docker. IMHO verwenden Sie den Docker-Container ähnlich wie eine vollwertige VM. Stattdessen würde ich Ihnen vorschlagen, das Docker-Image als endgültiges Artefakt zu behandeln und es zu versionieren. Notiz: Dies ist nur meine bescheidene Meinung, Sie haben möglicherweise einen gültigen Anwendungsfall, den ich nicht kenne und auf den ich neugierig bin.
Im Docker verwende ich einen Befehl wie diesen:
exec /usr/sbin/httpd -D FOREGROUND
in welcher linux distro & version?
– LucianDex
6. Januar um 14:29 Uhr
Vineth
Aber bevor Sie loslegen, schlägt Ihr Apache beim Neustart fehl? So geht es aus? In diesem Fall lassen Sie es bitte laufen, indem Sie die richtigen Konfigurationen vornehmen und sich diese Protokolle ansehen.
Eine Methode, die Sie ausprobieren können, ist die Anmeldung beim Container (um zu bashen), und Sie könnten immer eine Docker-Commit an einem Punkt, an dem es funktioniert. Sie können dann Ihr Basis-Container-Image darauf ändern.
Ich hatte Problemumgehungen für ähnliche Situationen, indem ich daraus neue Bilder erstellte engagiert sein diejenigen, die anders verwenden EINSTIEGSPUNKTist in meinem Dockefile.
in welcher linux distro & version?
– LucianDex
6. Januar um 14:29 Uhr
14042600cookie-checkWie starte ich Apache2 neu, ohne den Docker-Container zu beenden?yes