Cover Image

Eine neue DDEV Version erblickt die Welt. Das neue DDEV 1.19 hat einige Verbesserungen zu bieten-

Netzwerke und und und …

Unter der Haube wurde einiges an der Docker Netzwerk Verwaltung geschaubt. Jedes ddev Projekt legt nun ein eigenes Docker Netzwerk an. Vorher waren alle ddev Projekte in einem globalen ddev Netzwerk. Die Trennung ist super sinnvolle da es damit zu weniger Konflikten kommt. Die docker-compose YAML Dateien sollten jetzt ohne links: Einträge erstellt werden. Sind noch welche vorhanden.

Laut dem Changelog muss in einem bestehenden Projekt nichts angepasst werden. Bei meinen Tests hatte ich in der Tat auch keine Probleme und konnte alle bestehenden Projekte auf meinem Rechner ohne Probleme hochfahren.

Das lizenzpflichtige Docker Desktop, ist jetzt auf den Betriebssystemen MacOS und Windows nicht mehr zwingend erforderlich. Unter Windows kann jetzt direkt Docker unter wsl2 intalliert werden.

Das Tool Colima wird jetzt experimentell unterstützt.

Remote Instanzen von Docker können jetzt auch nutzt werden. Damit lassen sich die Projekte auf einen anderen Server auslagern.

Experimentell ist auch die Unterstützung von Ranger Desktop.

Neue Funktionen

get Kommando

Das get Kommando kann Services in einem Projekt installieren. Es entfällt das manuelle Kopieren der Rezepte aus dem ddev-contrib Repository. Es werden offizielle und inoffizielle Services angeboten.

Eine Liste aller Services erhält man so:

$> ddev get --list

┌────────────────────────┬────────────────────────────────────────────────┐
│ ADD-ON                 │ DESCRIPTION                                    │
├────────────────────────┼────────────────────────────────────────────────┤
│ drud/ddev-beanstalkd   │ beanstalkd for ddev*                           │
├────────────────────────┼────────────────────────────────────────────────┤
│ drud/ddev-memcached    │ Install memcached as an extra service in ddev* │
├────────────────────────┼────────────────────────────────────────────────┤
│ drud/ddev-redis        │ redis service for ddev*                        │
├────────────────────────┼────────────────────────────────────────────────┤
│ drud/ddev-drupal9-solr │ Drupal 9 Apache Solr installation for DDEV*    │
└────────────────────────┴────────────────────────────────────────────────┘
Add-ons marked with '*' are official, maintained DDEV add-ons.

Über den Add-On Namen kann dann ein Service installiert werden:

$> ddev get drud/ddev-memcached

Um ein eigenes Repo in der Liste zu registrieren kann ein eigenes öffentliches Github Repository mit dem Topic ddev-get versehen werden. Das ddev get Kommando lädt dann im Hintergrund über einen eingebauten Github-Client die passende Liste an Repositories. Services aus Repositories die nicht der ddev Organisation angehören sind inoffizielle Services und sollten vorher noch einmal manuell geprüft werden.

Service Kommando

Services die im .ddev Verzeichnis des Projekts als docker-compose.<service>.yaml vorliegen, lassen sich nun deaktivieren und aktivieren. Es reicht den Namen des Service als Argument zu übergeben.

Beispiel:

ddev service disable varnish

In diesem Fall wird die Datei .ddev/docker-compose.varnish.yaml in das Verzeichnis .ddev/.disabled-services verschoben.

Die Dateien unter .disabled-services können auch in die Versionierung übernommen werden.

Ein deaktivierter Service kann dann wie folgt wieder aktiviert werden:

ddev service enable varnish

Datenbank Änderungen (Postgres Unterstützung)

Die config Kommando wurde angepasst.
Die Optionen --mysql-version und --mariadb-version wurden durch die neue universalere --database option setzt. Hier kann direkt die Datenbank und die Version angegeben werden.

Beispiele:

ddev config --database=mysql:8.0
ddev config --database=mariadb:10.3
ddev config --database=postgres:13
ddev config --database=postgres:14

Die Kommandos die mit Datenbanken arbeiten wurde alle so angepasst, dass diese mit Postgres klar kommen. Damit steht snapshots und SQL dumps nichts im Wege.

Snapshots sind komprimiert

Wird über ddev snapshot ein Datenbank Snapshot angelegt, wird dieser nun über gzip komprimiert. Der Speicherplatz reduziert sich drastisch. Laut Changelog kann die den Faktor 20 betragen.

Alte Snapshots, die unkomprimiert vorliegen, können auch weiterhin verwendet werden.

NodeJS Konfiguration

Auch PHP Projekte kommen heute fast nicht mehr ohne NodeJS aus da viele Dev-Tools (gerade im Frontend-Bereich) auf NodeJS Basis laufen. DDEV hatte schon immer Node vorinstalliert. Allerdings war das Ändern der Version bisher nur über ein Dockerfile möglich. Das ändert sich nun mit dem neuen Release. Das config Kommando kommt nun mit der Option --nodejs-version daher. Unterstützt werden die NodeJS Versionen 12, 14, 16 und 17. Standard ist die Version 16.

Neu ist auch das Kommando ddev nvm um direkt mit dem vorinstallierten Node Version Manager zu arbeiten.

Damit lässt sich beispielsweise die NodeJS Version mal eben auf die Version 6 herunterstufen.

ddev nvm install 6

# Sollte die Version 6 anzeigen
ddev nvm run node --version

PHP, Drush, MySQL Kommandos optimiert.

Kleine aber feine Änderung. Einige Kommandos wurden optimiert, sodass es weniger Konflikte beim “quoten” von Argumenten gibt. Das trifft auch auf die das “exec” Kommando zu, was generisch genutzt werden kann.

Composer Root wechsel dich …

Projekt die nicht die composer.json im Root-Verzeichnis haben, sondern in einem Unterverzeichnis, werden die neue Option ddev config --composer-root=<relativer-pfad> lieben. Danach arbeitet ddev composer dann im Unterverzeichnis.

Um das ganz wieder zurückzusetzen gibt es die Option ddev config --composer-root-default.

Debug Ausgaben

Einige Ausgaben wurden unterdrückt. Über die Env-Variable DDEV_DEBUG können die Ausgaben wieder aktiviert werden.

export DDEV_DEBUG=true

In eine ähnliche Kategorie fällt diese Meldung aus dem Changelog.

ddev no longer pesters about overridden commands (when project has a drush command that overrides the global drush command, for example)

Troubleshooting

In Verbindung mit Docker bei der Entwicklung gibt es immer mal wieder Probleme. Das kann an diversen Dingen liegen. Oft liegt es an aktualisierten Betriebssystemen oder neuen Docker Versionen. Wenn dann noch z.B. ein NFS Mount oder was ähnliches im Spiele sind, kann es zu seltsamen Fehlermeldungen kommen die zum Teil in Aufwendige Fehlersuche ausarten können.

Genau da kommen jetzt die zwei neuen Kommando ddev debug dockercheck und ddev debug test ins Spiel. Das debug dockercheck Kommando prüft einmal grob ob Docker funktioniert.

Das sieht dann so aus:

$> ddev debug dockercheck

Docker platform: balmung 
Using docker context: default (unix:///var/run/docker.sock) 
docker-compose: v2.2.2 
Using DOCKER_HOST=unix:///var/run/docker.sock 
Docker version: 20.10.12 
Able to run simple container that mounts a volume. 
Able to use internet inside container. 

Das Kommando debug test Kommando führt umfangreichere Tests über ein Test-Script durch. Das Test Script ist ein einfaches Shell Script, welches in ddev mitgeliefert wurde. Wer mal einen Blick in das Script werfen will, findet es hier: https://github.com/drud/ddev/blob/master/cmd/ddev/cmd/scripts/test_ddev.sh

Fazit

Der neue ddev 1.19 Release macht wirklich Spaß. Ich habe selbst beim testen mitgeholfen und kann nur sagen, dass die Entwicklung mit Magento 2 super damit funktioniert. Bisher konnte ich auch alle meine Projekte ohne Probleme hochfahren. Das neue Service Kommando hat auf jeden Fall viel Potenzial. Vermutlich wird es dann bald auch eine Suche für die Services geben, wenn die Community erst mal in Fahrt kommt.

Updates

  • 12.03.2022: “Composer Root” Info. Danke an Josef Glatz für den Hinweis.