© Mix and Match Studio/Shutterstock.com
Erste Schritte mit Docker

Mit PHP in den Containerhafen einfahren


Es muss nicht immer XAMPP sein. Mit Docker lässt sich eine maßgeschneiderte lokale Entwicklungsumgebung für die jeweiligen Projektbedürfnisse einrichten.

Bevor Code auf dem Webserver landet, muss er erstmal auf dem eigenen Rechner geschrieben und getestet werden. Das stellt bei heutigen Projekten große Anforderungen an die lokale Entwicklungsumgebung. Natürlich muss die jeweilige Programmiersprache installiert sein, ein Webserver sollte vorhanden sein und zusätzliche Software wie MySQL wäre auch nicht schlecht. Dafür gibt es vorgefertigte Tools wie XAMPP und MAMP, die die wichtigsten Bauteile mitbringen. Was aber, wenn die Anforderungen individueller sind und andere bzw. weitere Komponenten benötigt werden?

Docker, das nicht nur für Entwicklungsumgebungen, sondern auch für produktive Systeme eingesetzt werden kann, bietet einen anderen Ansatz. Hier kann man sich die benötigte Software selbst zusammenstellen. Auf dem Docker Hub findet man eine große Anzahl offizieller Images, mit denen sich eine Entwicklungsumgebung bauen lässt. Wir wollen im Folgenden eine Beispielapplikation mit PHP, NGINX, MySQL und ein paar Extras umsetzen. Zunächst klären wir jedoch die wichtigsten Begriffe, die im Zusammenhang mit Docker auftreten.

Kleines Docker-Einmaleins

Docker ist eine Software zur Virtualisierung. Im Gegensatz zu virtuellen Maschinen wird jedoch kein komplettes System simuliert, sondern nur die Prozesse, die gebraucht werden. Bei der Verwendung von Docker stößt man auf die Begriffe „Image“ und „Container“. Das Image ist der Bauplan für den (oder die) Container. Ein Container ist eine laufende Instanz eines Images. Der Container kann verschiedene Aufgaben erfüllen, je nachdem, was im Image definiert ist und wie der Container gestartet wird. Das kann zum Beispiel das Ausführen eines Skripts sein oder die Funktionalität eines Webservers. Images erstellt man entweder selbst mittels eines Dockerfiles oder lädt sie aus einem Repository herunter. Die Standardquelle ist der Docker Hub [1], aus dem wir uns für unsere Entwicklungsumgebung bedienen werden. Für die Orchestrierung von mehreren Containern bietet es sich an, eine docker-compose.yml-Datei zu verwenden, wie wir im Folgenden sehen werden.

Die Basis

Auf unserem Rechner muss lediglich Docker installiert sein [2]. Sämtliche weitere Software werden wir in Containern laufen lassen. Wir legen zunächst folgende Ordner- und Dateistruktur in einem neuen Verzeichnis an:

  • app

  • nginx

    • default.conf

  • php

    • Dockerfile

  • docker-compose.yml

Im Ordner app werden wir unseren Anwendungscode ablegen. Die Datei default.conf im Ordner nginx enthält die Webserverkonfiguration, wie sie von Symfony empfohlen wird (Listing 1). Eine Besonderheit findet sich beim Parameter fastcgi_pass. Hier referenzieren wir unseren PHP-Container. Die Datei docker-compose.yml ist das Herzstück unserer Entwicklungsumgebung. Hier werden wir die Container definieren, die wir verwenden wollen. Die Datei Dockerfile im Ordner php benutzen wir, um das PHP Image aus dem Docker Hub so zu erweitern, dass wir Composer und eine PHP-Erweiterung verwenden können. Der Inhalt ist in Listing 2 zu sehen.

Listing 1: nginx-Konfiguration

server { server_name localhost; root /app/public; location / { try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { fastcgi_pass php:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang