Ich habe diese Dockerfile, die gut funktioniert, aber ich wurde gesagt, dass es vielleicht nicht der beste Weg ist zu tun, was ich wollte:Bedeutung des Orts von CMD in Dockerfile
FROM debian:jessie
RUN apt-get update && apt-get install -y lighttpd php5-cgi php5-common php5 php5-mysql php5-gd
RUN echo server.modules += \(\"mod_rewrite\"\) >> /etc/lighttpd/lighttpd.conf
CMD ["lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"]
RUN lighty-enable-mod fastcgi-php
RUN service lighttpd restart
RUN chown -R www-data:www-data /var/www/html
Wie Sie sehen können, Ich erstelle ein Bild für einen Container mit Lighttpd und PHP.
Meine Frage ist über die Stelle des CMD-Teils in meiner Dockerfile. Mir wurde gesagt, dass es besser ist, es am Ende der Datei zu setzen, aber wie Sie sehen können, habe ich es in der Mitte von mir gemacht, und es hat gut funktioniert.
Es stoppt nicht die Erstellung noch stört es die service lighttpd restart
im Laufteil darunter.
Gibt es Best Practices in diesem Bereich oder ist das normal? Kann ich direkt nach der Installation von apt-get eine Dockerdatei mit meinem CMD erstellen?
Danke für Ihre Antworten zu meiner Frage und Entschuldigung für mein Englisch, wenn es große Fehler gibt.
Warum "RUN service lighttpd restart" hinzufügen? Im Image wird kein einzelner Prozess ausgeführt (nur in Containern), sodass es einen Layer gibt, der lediglich einen Prozess startet, der nicht mit dem Befehl restart ausgeführt wurde, und dann sofort nach "service" beendet wird wird schnell verlassen, macht wenig Sinn. – BMitch
Ich weiß jetzt, aber es ist nur zwei Wochen her, seit ich Docker gestartet habe und diese Datei war mein erster Versuch, etwas zu tun, das funktionierte. Ich habe eine neue Version, nachdem ich mit jemandem gesprochen habe, wo es keinen Neustart mehr gibt und nur ein CMD am Ende der Datei, aber wir haben uns gefragt, warum es gut mit diesen "Fehlern" der Konzeption funktionierte ^^ –