Was ist DDEV?
DDEV ist ein Open-Source-Tool, das dir hilft, lokale Entwicklungsumgebungen für Webanwendungen zu erstellen. Es basiert auf Docker und ermöglicht es dir, Container für verschiedene Projekte zu verwalten. Mit DDEV kannst du mühelos verschiedene Versionen von Software und Abhängigkeiten testen, ohne dass Konflikte entstehen. Die einfache Konfiguration und der schnelle Setup-Prozess machen DDEV zu einer bevorzugten Wahl für Entwickler, die eine flexible und skalierbare Entwicklungsumgebung benötigen.
Brauchst du DDEV oder reicht Docker?
Wenn du in der Webentwicklung tätig bist, insbesondere bei der Arbeit mit Content-Management-Systemen oder E-Commerce-Plattformen wie Shopware 6, ist DDEV ein wertvolles Werkzeug. Es ermöglicht dir, deine Entwicklungsumgebung zu standardisieren, was zu einer höheren Effizienz führt. Außerdem minimiert DDEV die Zeit, die du mit der Einrichtung deiner Umgebung verbringst, und ermöglicht dir, dich auf das Wesentliche zu konzentrieren: die Entwicklung und Optimierung deiner Anwendung.
Docker selbst ist sehr leistungsstark und hilft idr Anwendungen in Containern zu isolieren und bereitzustellen. Dies gewährleistet eine konsistente Laufzeitumgebung, unabhängig davon, ob du lokal entwickelst oder in der Cloud bereitstellst. DDEV basiert auf Docker und nutzt dessen Vorteile, um dir eine benutzerfreundliche Schnittstelle und eine vereinfachte Konfiguration zu bieten. Während Docker eine flexible und vielseitige Lösung ist, erfordert es oft mehr technisches Wissen und manuelle Konfiguration. DDEV hingegen abstrahiert viele dieser komplexen Aspekte und bietet dir sofort einsatzbereite Entwicklungsumgebungen, die leicht angepasst werden können.
Wie kannst du DDEV für Shopware 6 installieren und konfigurieren?
Die Installation und Konfiguration von DDEV für Shopware 6 ist ein unkomplizierter Prozess. Folge diesen Schritten:
- Docker installieren: DDEV benötigt Docker. Stelle sicher, dass Docker auf deinem System installiert und konfiguriert ist. Sollte Docker nicht installiert sein, folge den Anweisungen in den DDEV-Docs.
- DDEV installieren: Besuche die offizielle DDEV-Website und lade die neueste Version herunter. Folge den Anweisungen für dein Betriebssystem (Windows, macOS, Linux).
Für Apple z.B. im Terminal mit dem Befehl:brew install ddev/ddev/ddev
- Projektverzeichnis erstellen: Erstelle ein neues Verzeichnis für dein Shopware 6-Projekt.
- DDEV initialisieren: Navigiere in dein Projektverzeichnis und führe den Befehl
ddev config
aus. Wähle die passenden Optionen für dein Projekt (z. B. PHP-Version, Webserver). - Shopware 6 installieren: Nutze den Befehl
ddev start
, um deine Entwicklungsumgebung zu starten. Du kannst dann Shopware 6 über die DDEV-Umgebung installieren, indem du die Installation gemäß der Shopware-Dokumentation durchführst.
Beispiel DDEV-Konfiguration für Shopware 6
Um DDEV optimal für deine Shopware 6-Anwendung zu konfigurieren, solltest du eine ddev config
-Datei erstellen, die spezifische Einstellungen für dein Projekt enthält. Hier ist ein Beispiel:
# .ddev/config.yaml name: mein-shopware-projekt type: shopware php_version: "8.4" database: type: mysql version: "5.7" webserver: nginx-fpm use_https: truedoc root: public env: APP_ENV: dev xdebug_enabled: true
Konfiguration aktivieren:
ddev config
Starten der Entwicklungsumgebung:
ddev start
Wie kannst du DDEV mit Shopware 6 verwenden?
Nach der Installation kannst du DDEV für die Entwicklung deiner Shopware 6-Anwendung nutzen. Hier sind einige grundlegende Schritte:
- Entwicklungsumgebung starten:
ddev start
- Zugriff auf die Anwendung: Öffne die bereitgestellte URL in deinem Browser.
- Datenbankverwaltung: Nutze
ddev mysql
, um auf die Datenbank zuzugreifen. - Erweiterungen testen: Entwickle und teste deine Plugins direkt in DDEV.
Welche Vorteile bietet dir DDEV?
DDEV bietet dir eine Vielzahl von Vorteilen:
- Einfache Einrichtung: Der schnelle Setup-Prozess spart Zeit.
- Konsistenz: Einheitliche Umgebung auf allen Maschinen.
- Flexibilität: Mehrere Projekte ohne Konflikte.
- Integration: Nahtlose Integration in bestehende Workflows.
- Community: Aktive Open-Source-Community.
Insgesamt ist DDEV eine hervorragende Lösung für Entwickler, die eine effiziente und skalierbare Umgebung für ihre Webanwendungen suchen.
Shopware 6 Kundenprojekt mit DDEV lokal nutzen
Mit diesem automatisierten Skript kannst du ein Kundenprojekt mit nur einem Befehl in weniger als 2 Minuten lokal nutzen. Um deine Arbeit mit DDEV und Shopware 6 zu optimieren, kannst du diese Skripte verwenden, die den Entwicklungsprozess erheblich beschleunigen. Es ist eine Sammlung von Shell-Skripten, die den gesamten Setup-Prozess für dein DDEV-Projekt automatisieren. Diese Skripte übernehmen die Einrichtung der Entwicklungsumgebung, das Herunterladen und Importieren von Daten vom Server sowie die Konfiguration von Shopware 6. Unten findest du ein Beispiel für die Skripte config.sh
, getServerFiles.sh
und ddev_sw6_customer.sh
, die diesen Prozess steuern.
Alle Files liegen in deinem PhpstormProjects-Verzeichnis unter _DEPLOYMENT. Hier führst du das Script ddev_sw6_customer.sh mit ssh ddev_sw6_customer.sh
aus. Es werden alle benötigten Daten vom Liveserver gezogen, ddev gestartet und ausgeführt und im Browser der Shop geöffnet.
Vorausgesetzt wird, dass ddev bereits installiert ist!
config.sh
Dieses Skript enthält alle erforderlichen Konfigurationsvariablen für den Deployment-Prozess. In meinem Benutzerordner befindet sich auch das Verzeichnis PhpstormProjects in welchem meine Projekte liegen und wo ich auch meinen Ordern „[deployment_folder]“ für die Skripte angelegt habe.
# Dieses Skript enthält alle erforderlichen Konfigurationsvariablen.
RUN_GET_SERVER_FILES=true
PROJECT_NAME="__CUSTOMER__-ddev"
CURRENT_DOMAIN="__DOMAIN__"
SHOPWARE_VERSION="__VERSION__"
DDEV_DB_NAME="db"
SSH_USER="__SSHUSER__"
SSH_SERVER="__SSHSERVER__"
SSH_PASSWORT="__SSHPW__"
SSH_PROJECT_PATH="../../web"
DB_USER="__DBUSER__"
DB_PASSWORT="__DBPW__"
DB_NAME="__DBNEM__"
DB_SQL_FILE="$PROJECT_NAME.sql"
CUSTOM_ZIP_FILE="$PROJECT_NAME.zip"
WEB_ROOT="$PROJECT_NAME"
#Pfad unter MacOS. [username] durch den Benutzer ersetzen!
MAIN_PATH="/Users/[username]/PhpstormProjects"
PROJECT_PATH="$MAIN_PATH/$PROJECT_NAME"
#[deployment_folder] durch den Ordernamen ersetzen indem sich die Skripte befinden!
SCRIPT_PATH="$MAIN_PATH/[deployment_folder]/$PROJECT_NAME"
DB_DUMP_PATH_FILE="$SCRIPT_PATH/$DB_SQL_FILE"
getServerFiles.sh
Dieses Skript stellt per SSH eine Verbindung zum Live-Server her und exportiert sich die Datenbank und den custom-folder vom Shopware-Projekt.
# Verbindung zum Server & Export benötigter Daten.
#!/bin/bash
source config.sh
SSH_DB_DUMP_COMMAND="mysqldump $DB_NAME -h 127.0.0.1 -u $DB_USER -p'\$DB_PASSWORT' > $DB_SQL_FILE"
SSH_CUSTOM_ZIP_COMMAND="zip -r $CUSTOM_ZIP_FILE custom/"
sshpass -p "$SSH_PASSWORT" ssh "$SSH_USER@$SSH_SERVER" << EOF
cd "$SSH_PROJECT_PATH" || { echo "Verzeichnis $SSH_PROJECT_PATH nicht gefunden"; exit 1; }
$SSH_DB_DUMP_COMMAND || { echo "mysqldump fehlgeschlagen"; exit 1; }
$SSH_CUSTOM_ZIP_COMMAND || { echo "zip fehlgeschlagen"; exit 1; }
exit
EOF
scp "$SSH_USER@$SSH_SERVER:$SSH_PROJECT_PATH/$PROJECT_NAME.*" .
ddev_sw6_customer.sh
Dieses Skript führt die DDEV-Konfiguration aus, importiert die Datenbank vom Live-Projekt und legt das Verzeichnis custom/ mit den ganzen Erweiterungen/Plugins an. Dieses Script ist das einzige welches ausgeführt werden muss und dient somit als Basis um alle benötigten Prozesse auszuführen.
# Ausführen der DDEV-Konfiguration und Import der benötigen Daten.
#!/bin/bash
source config.sh
if [ "$RUN_GET_SERVER_FILES" = true ]; then
source getServerFiles.sh
else
echo "Serververbindung deaktiviert"
fi
export PATH="$PATH:/usr/local/bin"
mkdir -p "../../$WEB_ROOT" && cd "../../$WEB_ROOT"
ddev config --project-name="$PROJECT_NAME" --project-type=shopware6 --docroot=public --php-version=8.3
ddev start
if [ -f "$DB_DUMP_PATH_FILE" ]; then
ddev import-db --file="$DB_DUMP_PATH_FILE"
else
echo "Kein SQL-File gefunden"
exit 1
fi
ddev composer create-project shopware/production:$SHOPWARE_VERSION . --no-interaction
ddev exec bin/console system:install --basic-setup --shop-locale=de-DE --no-interaction
ddev exec bin/console system:setup --database-url="mysql://db:db@db:3306/$DDEV_DB_NAME" --force --no-interaction
ddev mysql -e "DELETE FROM sales_channel WHERE name = 'Storefront';"
cd "$PROJECT_PATH"
ENV_FILE="./.env.local"
if ! grep -q "SHOPWARE_HTTP_CACHE_ENABLED=0" "$ENV_FILE"; then
echo "SHOPWARE_HTTP_CACHE_ENABLED=0" >> "$ENV_FILE"
fi
ddev exec bin/console cache:clear
ddev exec bin/console dal:refresh:index
DDEV_DOMAIN=$(ddev describe -j | jq -r '.raw.primary_url' | sed 's#https://##')
ddev mysql -e "UPDATE sales_channel_domain SET url = REPLACE(url, '$CURRENT_DOMAIN', '$DDEV_DOMAIN');"
mv "$SCRIPT_PATH/$CUSTOM_ZIP_FILE" .
unzip -o "$CUSTOM_ZIP_FILE" -d .
rm "$CUSTOM_ZIP_FILE"
ddev launch admin
Diese Skripte sind so konzipiert, dass sie den gesamten Setup-Prozess von DDEV und Shopware 6 automatisieren, was dir Zeit und Aufwand spart. Du musst die Variablen in config.sh
setzen und das Basis-Script ausführen.
Storefront und Admin Watcher mit ddev nutzen
Seit der Shopware Version 6.7.0.0 wurde Webpack durch Vite als JavaScirpt-Bundler für die Admin-Komponenten ersetzt. Der Standardport für den Vite-Watcher ist 5173. Um den vorherigen Port 9997 zu verwenden, kannst du ihn mit der Umgebungsvariable ADMIN_PORT
überschreiben. Dazu muss deine config.watcher.yaml
-Datei wie folgt aktualisiert werden:
# .ddev/config.watcher.yaml für 6.7.0.0-rc4 und höher
web_environment:
- HOST=0.0.0.0
- ADMIN_PORT=9997
- PROXY_URL=${DDEV_PRIMARY_URL}:9998
- STOREFRONT_SKIP_SSL_CERT=true
web_extra_exposed_ports:
- name: admin-proxy
container_port: 9997
http_port: 8887
https_port: 9997
- name: storefront-proxy
container_port: 9998
http_port: 8888
https_port: 9998
- name: storefront-assets
container_port: 9999
http_port: 8889
https_port: 9999
Admin-Watcher mit ddev nutzen
Um den Admin-Watcher zu starten, verwende bin/watch-administration.sh
oder via composer composer run watch:admin
. Du erreichst den Admin-Watcher in deinem Browser unter https://< PROJECT_NAME >.ddev.site:9997
.
Storefront-Watcher mit ddev nutzen
Für den Storefront-Watcher kannst du bin/watch-storefront.sh
oder composer run watch:storefront
verwenden und erreichst ihn unter https://< PROJECT_NAME >.ddev.site:9998
.