Docker Beispiel Php
Docker Beispiel Php
In diesem Beispiel möchten wir das Micro Framework PHP Slim und den PHP Package Manager Composer installieren.
1. Wir erstellen ein composer.json File und inkludieren die Abhängigkeiten.
{ "require": { "slim/slim": "^3.0" } }
2. Wir benötigen einen Startpunkt eines PHP Images. Ein PHP Image welches unseren Anforderungen - einen Web Server zu starten inkludiert. Dafür eignet sich das Apache Image. Wir können auf Docker Hub nach PHP suchen und dort im offiziellen Image finden wir die aktuellste Version. Wir sehen uns das Image an und können folgende Informationen daraus gewinnen:
- Der Server rennt auf Port 80
- Der Working Dir Pfad lautet /var/www/html
3. Wir erstellen ein Dockerfile mit den gewonnen Informationen
FROM php:7.3.1-apache
4. Anhand der Composer Webseite entnehmen wir die Methode zur programmatischen Installation von Composer und fügen diese unserem Dockerfile hinzu. Link: How do I install Composer programmatically?
RUN EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)" && \ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ ACTUAL_SIGNATURE="$(php -r "echo hash_file('SHA384', 'composer-setup.php');")" && \ if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then >&2 echo 'ERROR: Invalid installer signature' ; rm composer-setup.php; exit 1; fi && \ php composer-setup.php --quiet && \ rm composer-setup.php && \ mv composer.phar /usr/local/bin/composer
Note: Mit der Zeile mv composer.phar /usr/local/bin/composer haben wir die Installation Global gesetzt.
5. Anschließend kopieren wir unser Composer.json File in unser Docker Image und führen Composer install aus.
COPY ./composer.json /var/www/html/ RUN composer install
6. Um dem Apache Web Server mitzuteilen wie das Routing funktioniert und somit PHP Slim überhaupt funktioniert. Müssen wir eine .htaccess anlegen.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L]
7. Um das Rewrite Module zu aktivieren und eine Bespiel index.php sowie unsere .htaccess zu kopieren erweitern wir unser Dockerfile.
RUN a2enmod rewrite COPY ./composer.json index.php .htaccess /var/www/html/
#