Zum Inhalt springen

DDEV für Symfony und Shopware: Die perfekte lokale Entwicklungsumgebung

Veröffentlicht am 17. Feb. 2026 | ca. 3 Min. Lesezeit |

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 config erkennt 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.

Thomas Wunner

Thomas Wunner

Fachinformatiker für Anwendungsentwicklung mit Ausbildereignungsprüfung und über 14 Jahre Erfahrung im Aufbau skalierbarer Webanwendungen mit Symfony und Shopware. Abseits der Tastatur ist Thomas als Rettungsschwimmer in der Wasserwacht aktiv, legt als DJ auf und erkundet die Umgebung auf dem Motorrad.

Kommentare

Kommentare werden von Remark42 bereitgestellt. Beim Laden werden Daten an unseren Kommentar-Server übertragen.