Starten Sie apache neu auf Docker
Ich versuche zu aktualisieren meine .htaccess-Datei auf einem Docker-container. Nach der Aktualisierung der Datei muss ich den Apache neu starten. Immer wenn ich versuche, den Apache neu starten: mit dem Befehl service apache2 restart
bekomme ich die folgende Fehlermeldung:
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
Die Apache-error-log kann mehr Informationen haben.
...fail!
Wenn ich an die error-log hat es keine neuen Fehler.
Dies ist, was mein Dockerfile aussieht:
FROM ubuntu:12.04
# Install dependencies
RUN apt-get update -y
RUN apt-get install -y git curl apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql php5-curl vim
# Install app
RUN rm -rf /var/www/ *
ADD src /var/www
# Configure apache
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
EXPOSE 80
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
- Sie nicht brauchen, um apache neu starten, wenn Sie ändern
.htaccess
... Vielleicht sollte man schauen, ob es irgendwelche anderen Programme, die port 80. Auch diese Frage ist off-topic für Stack-Überlauf, da dies hat nichts zu tun mit der Programmierung. Super User ist die richtige Plattform (nicht crosspost).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, weil Sie (richtigerweise) nicht an den Start apache as a service, wenn Sie
docker run
den container. Die Zeile:Apache startet in den Vordergrund.
Ich vermute, Sie sind dann mit
docker exec
ausführen einer shell im container, Bearbeiten Sie die Datei und starten Sie apache neu? Wenn dem so ist würde dies erklären, warum das zweite mal, wenn Sie starten Sie den apache beschwert es sich über den vorhandenen Prozess.Denke ich, wenn Sie mit Containern auf diese Weise, dann sind Sie wirklich verpassen Gunsten von Behältern, die kommt, wenn Sie behandeln Sie als unveränderlich und halten Sie die Daten außerhalb des Containers (entweder auf Ihrem Rechner oder in Mengen), so dass Sie leicht ersetzen die container.
In Ihrem Fall, wenn Sie brauchen, um zu ändern .htaccess-Datei, die ich denke, es wäre mehr normal zu mounten, die Datei in den container, indem Sie mit einem Befehl wie:
Dann, wenn Sie eine änderung an der Datei und Neustart von apache können Sie verwenden:
Obwohl es vielleicht lohnt sich eine Untersuchung der Anregung von Charlotte Dunois, dass Sie vielleicht nicht einmal brauchen, um den apache neu starten.
Tatsächlich brauchen Sie nicht, um Apache neu starten um die änderungen anzuwenden, definiert .htaccess - diejenigen angewendet werden, die während der Laufzeit. Wenn Sie ändern der apache-config-Datei (wie virtual host-definition oder etwas in httpd.conf), kannst du auch reload-config ohne Neustart von apache mit