Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

PHP mit Docker: Entwicklungsumgebung Schritt für Schritt einrichten

Sie befinden sich: Home > Php Tutorial > PHP mit Docker:...

PHP mit Docker: Entwicklungsumgebung Schritt für Schritt einrichten


Eintrag am:  30.03.2026
Hits / Besucher:  54
Sprache:  Deutsch
Kategorie:  Fortgeschrittene...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Klassische Tools wie XAMPP oder MAMP haben lange als Standard für lokale PHP Entwicklung gedient. Docker bietet jedoch eine modernere Alternative, die Projekte in isolierten Containern ausführt und so Konflikte zwischen verschiedenen PHP Versionen oder Extensions zuverlässig vermeidet. Dieses Tutorial zeigt, wie sich eine vollständige PHP Entwicklungsumgebung mit Docker aufsetzen lässt, vom offiziellen PHP Docker Image über das Dockerfile bis hin zu Docker Compose mit Nginx und MySQL.

Illustration zum Tutorial: PHP mit Docker: Entwicklungsumgebung Schritt für Schritt einrichten

Den Ausgangspunkt bildet das offizielle PHP Image auf Docker Hub, das in mehreren Varianten für unterschiedliche Einsatzzwecke bereitsteht.

Das offizielle PHP Docker Image

Auf Docker Hub stellt PHP ein offizielles Image bereit, das in drei Hauptvarianten verfügbar ist. Die Wahl der richtigen Variante bestimmt, wie der Container später arbeitet.

/* Die drei Hauptvarianten des PHP Images */

docker pull php:8.4-cli
docker pull php:8.4-fpm
docker pull php:8.4-apache

Die Variante cli eignet sich für Kommandozeilenskripte und Cronjobs. Die Variante fpm stellt PHP als FastCGI Process Manager bereit und benötigt einen separaten Webserver wie Nginx. Die Variante apache bringt den Apache Webserver bereits mit und ist damit die einfachste Lösung für den Einstieg. Alle Varianten existieren zusätzlich als Alpine Builds, die deutlich kleiner ausfallen, aber bei manchen Extensions die Paketinstallation über apk statt apt-get erfordern.

Dockerfile für PHP erstellen

Ein Dockerfile definiert, wie das Image aufgebaut wird. Es legt das Basis Image fest, installiert Extensions und kopiert den Quellcode in den Container.

/* Einfaches Dockerfile mit Apache */

FROM php:8.4-apache

RUN docker-php-ext-install pdo pdo_mysql

COPY ./src /var/www/html/

EXPOSE 80

Der Befehl docker-php-ext-install ist das Standardwerkzeug für Core Extensions. Er kompiliert und aktiviert die angegebenen Module automatisch. Nach dem Erstellen lässt sich das Image mit docker build -t mein-php-app . bauen und mit docker run -p 8080:80 mein-php-app starten.

PHP Extensions hinzufügen

Viele PHP Projekte benötigen Extensions wie GD für Bildverarbeitung oder Xdebug zum Debuggen. Core Extensions werden über docker-php-ext-install installiert, während PECL Extensions einen separaten Installationsweg nutzen.

/* Dockerfile mit GD, Redis und Xdebug */

FROM php:8.4-fpm

RUN apt-get update && apt-get install -y
libfreetype-dev
libjpeg62-turbo-dev
libpng-dev
&& docker-php-ext-configure gd
--with-freetype --with-jpeg
&& docker-php-ext-install -j$(nproc) gd pdo pdo_mysql

RUN pecl install redis xdebug
&& docker-php-ext-enable redis xdebug

Der Befehl docker-php-ext-configure erlaubt es, Kompilierungsoptionen für Extensions wie GD zu setzen. PECL Extensions wie Redis und Xdebug werden zunächst über pecl install heruntergeladen und anschließend mit docker-php-ext-enable aktiviert. Ein PHP Skript im Container kann die verfügbaren Extensions prüfen.

<?php

$extensions = get_loaded_extensions();

$erforderlich = ['gd', 'pdo_mysql', 'redis', 'xdebug'];

foreach ($erforderlich as $ext) {
$status = in_array($ext, $extensions) ? 'geladen' : 'fehlt';
echo $ext . ': ' . $status . PHP_EOL;
}
/*
gd: geladen
pdo_mysql: geladen
redis: geladen
xdebug: geladen
*/

Docker Compose für PHP Projekte

In der Praxis besteht eine Entwicklungsumgebung aus mehreren Diensten. Docker Compose ermöglicht es, PHP, einen Webserver und eine Datenbank gemeinsam zu starten und zu verwalten.

Das folgende Diagramm zeigt den Aufbau eines typischen Multi Container Setups.

flowchart LR
    A["Dockerfile"] --> B["PHP-FPM Container"]
    D["docker-compose.yml"] --> B
    D --> E["Nginx Container"]
    D --> F["MySQL Container"]
    B <--> E
    B <--> F

Die zugehörige docker-compose.yml bringt alle drei Dienste zusammen.

/* docker-compose.yml */

services:
php:
build: .
volumes:
- ./src:/var/www/html
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: geheim
MYSQL_DATABASE: app
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:

Mit docker compose up startet die gesamte Umgebung. Die Volumes sorgen dafür, dass Änderungen am Quellcode im src Verzeichnis sofort im Container sichtbar werden. Das benannte Volume db_data persistiert die Datenbankdaten über Container Neustarts hinweg.

Von XAMPP zu Docker wechseln

Der Umstieg von XAMPP oder MAMP auf Docker bringt mehrere Vorteile mit sich. Jedes Projekt kann eine eigene PHP Version und individuelle Extensions nutzen, ohne dass globale Konfigurationen kollidieren. Die gesamte Umgebung ist im Dockerfile und in der docker-compose.yml dokumentiert und lässt sich von jedem Teammitglied identisch reproduzieren. Zudem spiegelt ein Docker Setup die Produktionsumgebung deutlich besser wider als ein klassisches lokales Setup.

<?php

$info = [
'php_version' => phpversion(),
'server_api' => php_sapi_name(),
'extensions' => count(get_loaded_extensions()),
'docker' => file_exists('/.dockerenv') ? 'ja' : 'nein'
];

foreach ($info as $key => $value) {
echo $key . ': ' . $value . PHP_EOL;
}
/*
php_version: 8.4.0
server_api: fpm-fcgi
extensions: 42
docker: ja
*/

Die Funktion file_exists('/.dockerenv') ist ein einfacher Weg, um zu erkennen, ob das Skript innerhalb eines Docker Containers läuft. So lassen sich umgebungsabhängige Konfigurationen direkt im Code steuern.

Fazit

Docker ersetzt klassische Tools wie XAMPP durch eine flexible, reproduzierbare Entwicklungsumgebung. Das offizielle PHP Image auf Docker Hub bietet mit den Varianten cli, fpm und apache eine passende Basis für jeden Einsatzzweck. Extensions lassen sich über docker-php-ext-install und PECL installieren, und Docker Compose vereinfacht den Betrieb von PHP zusammen mit Nginx und MySQL. Wer einmal mit Docker arbeitet, wird die isolierten und portablen Container nicht mehr missen wollen.

 


Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.