Hallo,
ich habe mittlerweile ein halbwegs funkltionierendes
Dockerfile zu
Laufen gebracht:
Kann man was verbessern?
Ein paar Sachen, die mir auffallen:
Es fehlt noch die Angabe von "VOLUME /var/www/html" oder ähnliches. Dort
sollen ja vermutlich die Daten und PHP-Skripte liegen, daher wäre es
unpraktisch, wenn diese bei jedem docker rm gelöscht würden.
In einem Docker Container ist es üblich, Logfiles nicht in Dateien (die bei
jedem docker rm gelöscht würden) zu schreiben, sondern Access-Logs an die
Standardausgabe und Error-Logs an den Standardfehlerkanal zu schicken. Das
sollte in die Apache Konfiguration noch eingebaut werden. Spätestens wenn
der Container mal mit Kubernetes orchestriert wird, macht sich das bezahlt.
Sowas hier...
# Install composer
RUN curl -sS
https://getcomposer.org/installer | php --
--install-dir=/usr/local/bin --filename=composer
...macht den Build nicht-reproduzierbar. Das Ergebnis hängt vom Inhalt der
angegebenen Webseite zum Build-Zeitpunkt ab. Außerdem handelt man sich damit
schnell Sicherheitsprobleme ein. (Es ist für die Webseite problemlos
möglich, unterschiedliche Inhalte auszuliefern, je nachdem ob die Seite
interaktiv oder beim Docker Build heruntergeladen wird.)
Außerdem gibt es den Composer auch in Ubuntu, warum installierst du ihn
nicht von dort?
Last not least: zum Lernen ist es sicherlich hilfreich, so ein Dockerfile
mal von Hand zu schreiben. Für die produktive Nutzung würde ich aber eher
auf eines der offiziellen PHP Images zurückgreifen, z.B. php:7-stretch
https://hub.docker.com/_/php
Gruß, Harald