Hallo,
On Mon, May 06, 2019 at 02:56:57PM +0200, Andreas Delleske wrote:
Hallo FLUGreisende,
ich arbeite mich gerade in Docker ein, es gelingt mir einen Apache mit PHP aufzusetzen (auf Openmediavault 4 BTW)
Nun muß ich aber noch ein ganze Liste von PHP- und / oder Apache-Modulen laden, und frage mich bzw. Euch wie man das effizient in ein Dockerfile bekommt. Ich kann ja jetzt nicht mehr einfach im /etc rumpfuschen nehme ich an. Ich möchte auch alles was ich mache im Dockerfile späer wiederholbar machen.
Wenn du das offiziellen PHP Image vom Docker Hub als Basis verwendest, dann ist da ein Debian stretch drunter. Da kannst du einfach mit
RUN a2enmod modul1 modul2 ...
die Module aktivieren. PHP Module musst du installieren, das geht z.B. mit
RUN apt-get update && apt-get install -y paket1 paket2 ... && apt-get clean
Bei anderen Basisdistributionen sehen die Kommandos ggf. anders aus. Evtl. ist es auch erforderlich, direkt in eine Apache-Konfigurationsdatei zu schreiben.
Oft ist es hilfreich, interaktiv in einem Container zu arbeiten und die genutzten Befehle aufzuschreiben, so dass man sie später ins Dockerfile einbauen kann.
Wei kann man die Instanz "updaten" nachdem man ein Dockerfile geändert hat? Oder muß man alles löschen und neu erzeugen?
Docker ist eigentlich so gedacht, dass man das Image neu baut, wenn man im Dockerfile etwas geändert hat oder wenn das Basis-Image aktualisiert wurde. Danach stoppt man die darauf aufbauenden Container, löscht sie und startet sie neu.
Je nach verwendetem Basis-Image kann man notfalls auch in den Container gehen und die Änderungen von Hand nachziehen. Das kann aber schnell zu nicht-reproduzierbaren Konfigurationen führen und sollte daher nur eine Ausnahme bleiben.
Gruß, Harald