Das Docker-Setup von API Platform vertieft
Das Docker-Setup von API Platform vertieft
~14 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
Bevor wir mit der eigentlichen API-Entwicklung beginnen, ein detaillierter Blick auf compose.yaml – wichtig, um SPÄTER (Kapitel 98) das Deployment zu verstehen.
compose.yaml im Detail (gekürzt)
services:
php:
build:
context: .
target: frankenphp_dev
depends_on:
- database
environment:
SERVER_NAME: ${SERVER_NAME:-localhost}, php:80
DATABASE_URL: postgresql://app:!ChangeMe!@database:5432/app?serverVersion=16&charset=utf8
MERCURE_URL: https://php/.well-known/mercure
volumes:
- ./api:/app
ports:
- target: 443
published: 443
database:
image: postgres:${POSTGRES_VERSION:-16}-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-app}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
volumes:
- database_data:/var/lib/postgresql/data
volumes:
database_data:FrankenPHP: der moderne PHP-Anwendungsserver
target: frankenphp_dev nutzt FrankenPHP – einen modernen PHP-Anwendungsserver, der Caddy (Webserver MIT automatischem HTTPS) UND den PHP-Interpreter in EINEM Prozess vereint. Anders als der klassische Ansatz (Nginx/Apache PLUS separater PHP-FPM-Prozess) läuft hier ALLES in EINEM Container – einfacher zu betreiben, oft auch performanter.
Das volumes-Mapping verstehen
./api:/app spiegelt Ihr LOKALES api/-Verzeichnis in den Container – Änderungen an Ihrem Code (auf Ihrem Rechner mit Ihrem Editor bearbeitet) sind SOFORT im Container sichtbar, OHNE das Image neu zu bauen. GENAU deshalb funktioniert lokale Entwicklung trotz Docker so flüssig.
Umgebungsvariablen: .env vs. compose.yaml
DATABASE_URL ist HIER DIREKT in compose.yaml gesetzt – GENAU derselbe Zweck wie .env in der Symfony-Schulung (Kapitel 4), nur auf Docker-Ebene statt PHP-Ebene definiert. Symfony liest diese Umgebungsvariable GENAU GLEICH wie zuvor, unabhängig davon, WOHER sie kommt.
Achtung: !ChangeMe! als Standard-Passwort ist BEWUSST offensichtlich unsicher – für PRODUKTIONS-Deployments (Kapitel 98) MUSS dieser Wert durch ein echtes, generiertes Secret ersetzt werden, GENAU wie APP_SECRET in der Symfony-Schulung.
Logs anschauen
docker compose logs php --follow
docker compose logs database --follow--follow (kurz -f) streamt neue Log-Zeilen live – unschätzbar wertvoll bei der Fehlersuche, da Symfonys eigenes var/log/-Verzeichnis (Kapitel 4 der Symfony-Schulung) INNERHALB des Containers liegt und nicht direkt vom Host aus einsehbar ist, ohne diesen Befehl.
In den Container einloggen
docker compose exec php bashTipp: Für längere Debugging-Sessions ist eine INTERAKTIVE Shell im Container oft praktischer als JEDEN einzelnen Befehl mit docker compose exec php ... zu präfixieren – nach exit landen Sie wieder auf Ihrem Host-System.