webentwicklung-frage-antwort-db.com.de

Wie starte ich Apache2 automatisch in einem Ubuntu Docker Container?

Ich versuche, eine Docker-Datei zu erstellen, die Apache automatisch startet. Nichts hat funktioniert. Wenn ich mich jedoch in den Container einlogge und service Apache2 start starte, funktioniert es. Warum kann ich diesen Befehl nicht über meine Docker-Datei ausführen?

FROM ubuntu

# File Author / Maintainer
MAINTAINER rmuktader

# Update the repository sources list
RUN apt-get update

# Install and run Apache
RUN apt-get install -y Apache2 && apt-get clean

#ENTRYPOINT ["/usr/sbin/Apache2", "-k", "start"]


#ENV Apache_RUN_USER www-data
#ENV Apache_RUN_GROUP www-data
#ENV Apache_LOG_DIR /var/log/Apache2

EXPOSE 80
CMD service Apache2 start
13
Rayhan Muktader

Das Problem ist hier: CMD service Apache2 start Wenn Sie diesen Befehl ausführen, wird Apache2 von der Shell getrennt. Docker funktioniert jedoch nur, solange der Hauptprozess noch läuft.

Die Lösung besteht darin, Apache im Vordergrund auszuführen. Dockerfile muss so aussehen: (nur letzte Zeile geändert).

FROM ubuntu

# File Author / Maintainer
MAINTAINER rmuktader

# Update the repository sources list
RUN apt-get update

# Install and run Apache
RUN apt-get install -y Apache2 && apt-get clean

#ENTRYPOINT ["/usr/sbin/Apache2", "-k", "start"]


#ENV Apache_RUN_USER www-data
#ENV Apache_RUN_GROUP www-data
#ENV Apache_LOG_DIR /var/log/Apache2

EXPOSE 80
CMD apachectl -D FOREGROUND
30
Bukharov Sergey

Für mich war die letzte Zeile mit CMD falsch:

# it helped me
CMD ["apachectl", "-D", "FOREGROUND"]
0
Radek