Zum Inhalt springen

Cookies ­čŹ¬

Cookies helfen uns, Ihnen als Nutzer in Zukunft bessere Informationen und eine verbesserte Benutzererfahrung zu bieten. Details

ddev: Docker f├╝r Webentwicklerddev xdebug false

Chris Wolf

Chris Wolf

ddev for Laravel.

Was ist ddev?

ddev ist nur ein Hilfsmittel f├╝r die Verwendung von Docker. Es vereinfacht die Interaktion und Konfiguration von Docker f├╝r die Webentwicklung auf wenige Befehle und eine Konfigurationsdatei.

tl:dr / F├╝r wen ist es geeignet?

Wenn du bereits mit deinem Webentwicklungsprozess vertraut bist oder Docker bereits auf die eine oder andere Art und Weise verwendest, ist dieser Artikel vielleicht nicht von gro├čem Nutzen.

Aber wenn du Docker noch nicht benutzt oder nicht wei├čt, wo du anfangen sollst, oder du ein bisschen frischen Wind gebrauchen kannst - read on!

Mit ddev konzentriert man sich mehr auf seinen Code und weniger auf Dev-Ops T├Ątigkeiten!

Zeit f├╝r eine Geschichte: Mein pers├Ânlicher Weg zu ddev

Fr├╝her habe ich meine Projekte direkt auf meinem Ubuntu-Rechner mit Apache v-hosts aufgesetzt. Ich hatte ein Bash-Skript im Einsatz, das ein neues Verzeichnis und ein Git-Repository anlegte und einen neuen Host hinzuf├╝gte.

Aber das hatte einige Schwachstellen und erforderte oft manuelle Schritte. Kurz gesagt, es wurde zeitaufw├Ąndig, das benutzerdefinierte Einrichtungsskript und alle ├änderungen, die an meinem System vorgenommen wurden, zu pflegen... Mit immer mehr Projekten wurde meine Zeit knapp und ich z├Âgerte, etwas f├╝r mich Neues wie Docker zu lernen.

Zu dieser Zeit bekamen wir von der Firma alle MacBooks f├╝r die Entwicklung, w├Ąhrend ich pers├Ânlich eher ein Linux-Typ bin. Die L├Âsung an meinem Arbeitsplatz (MAMP) war f├╝r meine pers├Ânlichen Projekte nicht geeignet. Zum Gl├╝ck wechselte ich zur richtigen Zeit den Arbeitgeber und lernte eine neue Art und Weise kennen, wie man an Webentwicklungsprojekten arbeiten kann: ddev.

Warum sollte man ddev und nicht einfach Docker verwenden?

Bei der Verwendung von Docker f├╝r die Webentwicklung muss man entwederein vorgefertigtes Image verwenden oder selbst eines erstellen. Wenn man keine speziellen Anforderungen hat und nur die ├╝blichen Dinge wie php, apache und mysql ben├Âtigt, dann kann man sich Zeit sparen, indem man das Rad nicht neu erfindet und einfach ddev verwendet. Es liefert ein vorgefertigtes Image gleich mit.

Und es bietet noch mehr:

- Leichte Auswahl an Software und Versionen

- Mailhog zum Abfangen von Emails

- Lokale SSL-Unterst├╝tzung

- Redis-Unterst├╝tzung (optional)

- Elasticsearch-Unterst├╝tzung (optional)

- Ngrok-Unterst├╝tzung (optional)

Warum ddev und nicht Laravel Sail?

Obwohl ich meistens an Laravel-Projekten arbeite, bevorzuge ich ddev. Es ist nicht auf Laravel beschr├Ąnkt sondern eher universell f├╝r die Webentwicklung einsetzbar. Man kann so gut wie alles damit laufen lassen. Manchmal muss ich z.B. ein Wordpress aufsetzen, was mit ddev ein Kinderspiel ist. Dass ich nur ein Tool lernen muss, anstatt zwei oder mehr, best├Ątigt meine Wahl bereits.

Wie man mit ddev beginnt

1. docker und ddev installieren

Wenn du Docker noch nicht installiert hast, musst du das nun nachholen.

Achtung: Nicht die post-install-steps von Docker vergessen!

Zum Schluss noch ddev installieren.

Wenn alles geklappt hat, sollte ddev dir seine Version mitteilen: ddev -v.

2. ddev zu einem (bestehenden) Projekt hinzuf├╝gen

Um ein beliebiges (bestehendes) Projekt mit ddev zu starten, navigierst du einfach ins Root-Verzeichnis des Projekts und gibst `ddev config` ein, wodurch der Initialisierungsprozess gestartet wird. Dabei werden einige Angaben abgefragt. Danach ist der Container startbereit: ddev start. Jetzt sollte das Projekt im Browser erreichbar sein.

Wie man xdebug f├╝r die Nutzung von ddev konfiguriert

Um xdebug mit ddev zu verwenden, muss es pro Projekt ein Mal konfiguriert werden. Jedes Mal, wenn man xDebug nutzen m├Âchte, muss der Debug-Mode mit ddev xdebug gestartet werden. Der Debugmode kann das Projekt ein wenig verlangsamen. Wenn man fertig ist, am besten abschalten mit ddev xdebug false.

xdebug f├╝r ddev und PhpStorm konfigurieren

Um mit PhpStorm ein ├╝ber ddev laufendes Projekt via xDebug zu debuggen, muss einmalig ein Path-Mapping definiert werden. Wenn das Projekt z.B. im Verzeichnis ~/Sites/laravel-tinker/ liegt, wird ein Path-Mapping zu /var/www/html ben├Âtigt.

Gehe dazu ins Men├╝ Run > Edit Configurations und dann Add a new Configuration.

Hier ein Screenshot der Konfiguration:

ddev xdebug config in phpstorm / docker xdebug config

xdebug f├╝r ddev und VSCode konfigurieren

Der Einrichtungsprozess für VSCode ist sehr einfach. In der ddev Dokumentation ist ein config snippet zu finden. Dieses wird dem Root-Verzeichnis des Projekts hinzugefügr - et voilà!

Falls Probleme auftreten oder die Debugsession nicht startet, pr├╝fe unbedingt die ddev und xDebug Version. Mit ddev v1.19.0 wurde der Default xdebug Port auf 9003 ge├Ąndert.

Der ddev Spickzettel: Die wichtigsten Commands

F├╝r meine t├Ągliche Arbeit habe ich diese Befehle als die am h├Ąufigsten verwendeten gefunden. Weitere Befehle k├Ânnen hier nachgelesen werden.

# ddev zu einem Projekt hinzuf├╝gen
ddev config

# Den Container des aktuellen Verzeichnisses starten
ddev start

# ├ľffnet die URL des Projekts
ddev launch

# Abrufen von Informationen ├╝ber den Container, wie URLs und lokale Anmeldeinformationen
ddev describe

# Wenn die PHP- oder MySql-Version ge├Ąndert werden soll, muss der Container neu aufgebaut werden.
# -O: Datenbank-Snapshot auslassen/├╝berspringen
# -R: Gespeicherte Projektdaten entfernen (MySQL, Logs, etc.)
ddev stop -O -R && ddev start

# Startet eine Shell-Sitzung im Container.
# Erfordert eine Authentifizierung, wenn Ihr Schl├╝ssel passwortgesch├╝tzt ist.
# N├╝tzlich, wenn der Container auf entfernte Ressourcen zugreifen muss,
# z.B. wenn Sie ein Deployment durchf├╝hren.
ddev auth ssh

# (Nur Laravel) bietet direkten Zugriff auf die Laravel artisan CLI 
ddev artisan <command>

# Start/stop xDebug
ddev xdebug
ddev xdebug false

# F├╝hrt einen beliebigen Befehl im Container aus, z.B.:
ddev exec <command>
ddev exec npm run dev

Wie man einen eigenen Befehl definiert

ddev macht es leicht, eigene Befehle zu definieren. F├╝r fast jedes Projekt, an dem ich arbeite, verwende ich einen benutzerdefinierten Befehl namens "provision". Darin sind alle Schritte geb├╝ndelt, die zur Einrichtung des Projekts erforderlich sind. Ein weiterer Anwendungsfall f├╝r einen benutzerdefinierten Befehl:

# .ddev/commands/web/codequality

#!/bin/bash
## #ddev-generated
## Description: Ensure code-quality
## Usage: codequality
## Example: "ddev codequality"

cd frontend
node_modules/.bin/eslint --ext .js,.vue --fix --ignore-path .gitignore --max-warnings 0 .

## run cs-fixer
vendor/bin/php-cs-fixer fix

## run tlinter
vendor/tightenco/tlint/bin/tlint 

## run phpstan
vendor/bin/phpstan analyze -c phpstan.neon

composer outdated --ansi -D -m --strict

Projekte miteinander verbinden

Bis hierhin war alles relativ einfach. Hier kommt noch ein sehr interessanter Punkt.

Wer an mehreren Projekten arbeitet die via API miteinander verbunden sind, kann das mit ddev ganz einfach erreichen. Mehr zu dieser Funktion in der ddev Dokumentation.

Man startet einfach beide Projekte mit ddev. Standardm├Ą├čig k├Ânnen die Projekte sich nicht "sehen".

Um das zu erm├Âglichen, erstellen wir einen Custom Service und definieren die Adresse unter der es erreichbar sein wird.

Um ein Projekt f├╝r andere Projekte erreichbar zu machen, wird eine yaml-Datei definiert:

# .ddev/docker-compose.router.yaml
version: '3.6'

services:
  web:
    external_links:
      - ddev-router:taskdoc.local.ddev.site


Quellen, Links & ddev Alternativen

- ddev documentation

- F├╝r MacOs: Laravel Valet

- Laravel Sail

- Laracast tutorial on how to set up docker

- Yannick Chenot's guide to docker for web development

- Titelbild von Fejuz

Bereit zu starten?

Mit uns haben Sie einen zuverl├Ąssigen Partner an Ihrer Seite, der sichere, hochwertige und planbare Softwarel├Âsungen bietet.