Nach Jahren mit Vagrant, Docker Compose und manuellen Setups bin ich bei DDEV gelandet — und bleibe. Hier ist, warum.
Was DDEV anders macht
DDEV ist eine Docker-basierte Entwicklungsumgebung, die genau eine Sache extrem gut macht: lokale PHP-Projekte zum Laufen bringen. Im Gegensatz zu einem selbst geschriebenen docker-compose.yml bietet DDEV:
- Zero Config:
ddev configerkennt Symfony, Shopware, WordPress automatisch - HTTPS out of the Box: Lokale SSL-Zertifikate via mkcert
- Multi-Projekt: Mehrere Projekte parallel, jedes mit eigener URL
- Versionierung: PHP-Version, MariaDB-Version, Node.js — alles konfigurierbar
Schnellstart für ein Symfony-Projekt
cd mein-symfony-projekt
ddev config --project-type=symfony
ddev start
# HTTPS-URL sofort nutzbar
open https://mein-symfony-projekt.ddev.site
Die .ddev/config.yaml:
name: mein-projekt
type: symfony
php_version: "8.2"
mariadb_version: "10.11"
nodejs_version: "20"
webserver_type: nginx-fpm
Alle Befehle im Container
Wichtig: PHP, Node.js und Composer laufen immer im Container. Das Host-System braucht nur Docker und DDEV:
# PHP-Befehle
ddev exec composer install
ddev exec bin/console cache:clear
ddev exec vendor/bin/phpunit
# Node-Befehle
ddev exec npm install
ddev exec npm run build
# Datenbankzugriff
ddev mysql
ddev export-db --file=backup.sql.gz
ddev import-db --file=backup.sql.gz
Shopware 6 mit DDEV
Shopware erfordert einige Extras — Elasticsearch, Redis, RabbitMQ. DDEV unterstützt das über Add-ons:
ddev get ddev/ddev-elasticsearch
ddev get ddev/ddev-redis
In der .ddev/config.yaml:
name: mein-shop
type: shopware6
php_version: "8.2"
mariadb_version: "10.11"
Playwright-Tests im Container
Ein besonderes Setup: E2E-Tests mit Playwright direkt im DDEV-Container ausführen. Der Vorteil: Keine lokale Chromium-Installation nötig, Tests laufen in der gleichen Umgebung wie die Anwendung.
# Chromium installieren (einmalig)
ddev exec npx playwright install chromium
ddev exec npx playwright install-deps chromium
# Tests ausführen
ddev exec npx playwright test
Wichtig: Die baseURL in der Playwright-Config muss https://localhost sein (nicht die .ddev.site-URL), da Playwright innerhalb des Containers läuft:
export default defineConfig({
use: {
baseURL: process.env.BASE_URL || 'https://localhost',
ignoreHTTPSErrors: true,
},
});
Multi-Projekt-Betrieb
DDEV verwaltet Router-Container, die alle Projekte unter eigenen URLs erreichbar machen:
https://firma-neu.ddev.site → Symfony-Website
https://dj-ti-max.ddev.site → DJ-Website
https://mein-shop.ddev.site → Shopware 6
Jedes Projekt hat seine eigene Datenbank, eigene PHP-Version und eigenen Node.js-Prozess. Kein Konflikt, kein Setup-Aufwand.
Tipps aus der Praxis
1. Datenbank-Version festnageln: Wenn die Datenbank einmal mit MariaDB 10.3 erstellt wurde, muss die Config auch 10.3 angeben — sonst gibt es Kompatibilitätsprobleme beim Import.
2. Xdebug bei Bedarf: Xdebug verlangsamt PHP deutlich. Aktivieren Sie es nur bei Bedarf:
ddev xdebug on # Step-Debugging aktivieren
ddev xdebug off # Wieder deaktivieren
3. Custom Commands: Eigene Shortcuts für häufige Befehle:
# .ddev/commands/host/deploy
#!/bin/bash
ddev exec bin/console cache:clear --env=prod
ddev exec composer install --no-dev --optimize-autoloader
echo "Deploy-Vorbereitung abgeschlossen!"
DDEV hat die Art, wie ich lokal entwickle, grundlegend verändert. Die Einrichtungszeit für ein neues Projekt ist von Stunden auf Minuten geschrumpft — und die Reproduzierbarkeit der Umgebung eliminiert "works on my machine"-Probleme komplett.
Kommentare
Kommentare werden von Remark42 bereitgestellt. Beim Laden werden Daten an unseren Kommentar-Server übertragen.