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
Gruß, Harald