Mein lokaler DDEV-Workflow für Drupal-Projekte
Mein lokaler DDEV-Workflow für Drupal-Projekte
Seit Jahren ist DDEV der Goldstandard für lokale PHP-Entwicklung, und das aus gutem Grund. Als Drupal-Entwickler habe ich schon alles durch: XAMPP, MAMP, Vagrant, rohes Docker Compose. Nichts kommt an die Effizienz, Stabilität und Developer Experience von DDEV heran.
In diesem Artikel zeige ich meinen persönlichen Workflow und wie ich DDEV konfiguriere, um maximale Performance und Produktivität herauszuholen.
Warum DDEV?
DDEV basiert auf Docker, nimmt einem aber die schmerzhafte Konfiguration von docker-compose.yml Dateien ab. Es bietet:
- Trusted HTTPS: Keine Browser-Warnungen mehr lokal.
- Dienste inklusive: Mailpit (E-Mails abfangen), phpMyAdmin/Sequel Ace Support, Redis, Solr, Elasticsearch – alles per Config aktivierbar.
- Konsistenz: Das Team hat exakt die gleiche Umgebung, egal ob macOS, Windows oder Linux.
1. Installation & Performance-Tuning (macOS)
Auf dem Mac installiere ich DDEV via Homebrew. Der wichtigste Schritt für mich ist aber die Aktivierung von Mutagen. Ohne Mutagen ist das Filesystem-Mounting von Docker auf macOS oft träge, besonders bei großen Drupal-Projekten mit tausenden von Files.
# Installation
brew install ddev/ddev/ddev
# Der Performance-Booster: Mutagen global aktivieren
ddev config global --mutagen-enabled=true
Seit ich Mutagen nutze, fühlt sich die Arbeit im Container fast so schnell an wie nativ.
2. Projekt-Setup für Drupal
Ein neues Drupal-Projekt starte ich meistens so:
mkdir mein-projekt
cd mein-projekt
ddev config --project-type=drupal10 --docroot=web --create-docroot
ddev start
ddev composer create drupal/recommended-project
ddev drush site:install -y
Meine Standard-Config (.ddev/config.yaml)
Ich passe die Config meistens noch etwas an, um PHP 8.3 und MariaDB in der passenden Version zu nutzen:
name: mein-projekt
type: drupal10
docroot: web
php_version: "8.3"
webserver_type: nginx-fpm
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
database:
type: mariadb
version: "10.6"
use_dns_when_possible: true
composer_version: "2"
web_environment:
- DRUSH_OPTIONS_URI=https://mein-projekt.ddev.site
Pro-Tipp: Ich lasse
xdebug_enabled: falsestandardmäßig, da Xdebug Performance kostet. Ich schalte es nur bei Bedarf ein (siehe unten).
3. Custom Commands: Die Geheimwaffe
DDEV erlaubt es, eigene Shell-Scripte als Befehle bereitzustellen. Diese liegen in .ddev/commands/web (für Container-Befehle) oder .ddev/commands/host (für Host-Befehle).
Xdebug Toggle
Statt die Config zu editieren, nutze ich den built-in Befehl:
ddev xdebug on
ddev xdebug off
Datenbank-Import vereinfachen
Ich habe oft SQL-Dumps von Staging oder Live. Ein einfacher Import-Befehl spart Zeit:
# .ddev/commands/host/import-db
#!/bin/bash
## Description: Importiert database.sql.gz aus dem Projektroot
## Usage: import-db
## Example: ddev import-db
if [ -f "database.sql.gz" ]; then
echo "Importiere database.sql.gz..."
ddev import-db --src=database.sql.gz
else
echo "Keine database.sql.gz gefunden."
fi
4. Integration in Tools
PHPStorm
DDEV integriert sich hervorragend in PHPStorm.
- CLI Interpreter: DDEV kann als Remote PHP Interpreter eingerichtet werden.
- Xdebug: Da DDEV die Ports standardisiert, funktioniert “Listening for PHP Debug Connections” meist out-of-the-box, sobald
ddev xdebug ongesetzt ist.
Datenbank-GUI
Ich nutze TablePlus oder Sequel Ace. DDEV macht es einfach:
ddev sequelace
# oder
ddev tableplus
Das öffnet direkt die Verbindung zur Datenbank. Kein manuelles Kopieren von Credentials mehr!
5. Snapshots
Vor einem riskanten Update (z.B. Drupal Core Update) mache ich immer einen Snapshot:
ddev snapshot --name=pre-update
# ... update läuft schief ...
ddev snapshot restore pre-update
Das ist viel schneller als ein kompletter Dump/Import-Zyklus.
Fazit
Mein DDEV-Workflow ist auf Geschwindigkeit und Einfachheit optimiert. Mutagen löst das Performance-Problem auf dem Mac, und Custom Commands automatisieren wiederkehrende Aufgaben. Für Drupal-Entwicklung gibt es aktuell keine bessere lokale Umgebung.
Wenn du noch mit MAMP oder rohem Docker kämpfst: Probier DDEV aus. Es lohnt sich.
Häufig gestellte Fragen (FAQ)
Warum DDEV statt Docker Compose pur?
Wie verbessere ich die DDEV Performance auf macOS?
Kann ich DDEV auch für Node.js Projekte nutzen?
Das könnte Sie auch interessieren
Drupal Configuration Management: Export, Import & Config Split richtig gemacht
Wie Sie mit Drupal Configuration Management und Config Split saubere Deployments zwischen Dev, Stage und Production erre...
Drupal Entwickler finden: So erkennst du echte Experten
Ein Guide für Unternehmen und Agenturen: Worauf du bei der Suche nach Drupal-Entwicklern achten musst, um dein Projekt z...
Drupal Custom Modules: Ein Einsteiger-Guide
Lerne, wie du eigene Drupal-Module entwickelst. Von der .info.yml bis zum ersten Controller und Routing.