Mein lokaler DDEV-Workflow für Drupal-Projekte

Steven Schulz
Steven Schulz

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: false standardmäß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.

  1. CLI Interpreter: DDEV kann als Remote PHP Interpreter eingerichtet werden.
  2. Xdebug: Da DDEV die Ports standardisiert, funktioniert “Listening for PHP Debug Connections” meist out-of-the-box, sobald ddev xdebug on gesetzt 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?
DDEV abstrahiert die Komplexität von Docker und bietet speziell für PHP/Drupal optimierte Container, SSL-Zertifikate und nützliche Tools wie Mailpit und phpMyAdmin out-of-the-box.
Wie verbessere ich die DDEV Performance auf macOS?
Die Nutzung von Mutagen ist der Gamechanger. Einfach `ddev config global --mutagen-enabled=true` setzen und die Synchronisation ist fast nativ schnell.
Kann ich DDEV auch für Node.js Projekte nutzen?
Ja, DDEV unterstützt auch Node.js Projekte, allerdings liegt der Fokus klar auf PHP-Anwendungen. Für reine Frontend-Projekte nutze ich oft direkt npm/yarn lokal, aber für Decoupled Drupal ist DDEV perfekt.

Das könnte Sie auch interessieren

← Zurück zum Blog