OXID Docker SDK mit Windows 10 WSL2 ausprobiert!

Ich möchte mit Euch meinen Wow-Effekt der letzten Woche teilen!

Mein Development-Rechner ist seid Anbeginn eine Windows-System (Ich weiß, ich weiß). Jedes Mal wenn Docker ins Spiel kam, wurde es gruselig. Denn auf Windows mit WSL2 stolperte ich jedes Mal über den Flaschenhals mit den gemounteten Laufwerken (dazu gibt es ellenlange Abhandlungen im Netz). Nun hat das Core-Team von OXID ein Docker-SDK auf GitHub bereit gestellt:

https://github.com/OXID-eSales/docker-eshop-sdk

Und passende Rezepte gleich dazu:

https://github.com/OXID-eSales/docker-eshop-sdk-recipes

Vor einigen Tagen habe ich gelesen, das man mit seinem Windows-Explorer auf das HomeDirectory von WSL2 zugreifen kann. Also nicht WSL2 auf die gemounteten Windowslaufwerke, sondern genau umgedreht. Also ausprobiert. Im Windows-Explorer in die Pfadzeile

\\wsl$\

eingeben und dann sehe ich mein Ubuntu-Subsystem. Gehe ich weiter, bin ich auch in meinem HomeDirectory …

\\wsl$\Ubuntu\home\user

… Also exakt in dem Gegenstück zu wenn ich in WSL2 auf das Home-Verzeichnis wechsele …

cd ~/

Sehr interessant. Also gleich die SDK-Rezepte ausprobiert, die - nun ohne Flaschenhals - fast genauso schnell laufen sollen, wie auf einem nativem Ubuntu.
Also per WSL2 ins HomeDirectory gewechselt, einen Ordner projects angelegt und in dem Ordner wie in der Rezepte-Readme beschrieben folgenden Befehl ausgeführt:

echo oxid6demo && git clone https://github.com/OXID-eSales/docker-eshop-sdk.git $_ && cd $_

Der Befehl cloned in das Verzeichnis oxid6demo unterhalb von projects das SDK und wechselt anschließend in das Verzeichnis. Dann kommen die Rezepte ran:

git clone https://github.com/OXID-eSales/docker-eshop-sdk-recipes recipes/oxid-esales

Nun noch ein Rezept aussuchen (Aktuell gibt es u.a. Rezepte für die Dev-Versionen von OXID CE 6.4, 6.5 und 7.0) und starten …

./recipes/oxid-esales/shop/b-6.4.x-ce-dev/run.sh

Das ging schnell. Mein Docker-Desktop zeigte mir das 6 von 7 Containern bereits laufen. Selenium zickte noch etwas. Aber alle anderen Container (vorallem die wichtigen Apache, MySQL und PHP) waren grün. Nur noch die etc/hosts ergänzt mit dem folgenden Eintrag, dann müsste es schon laufen…

127.0.0.1	localhost.local

… und tatsächlich. Meine geliebten Surfbretter sind da und wie schnell. WOW!

Ok, jetzt noch den letzten fehlenden Container zum laufen bekommen. Also Maschine stoppen und die docker-compose.yaml im Verzeichnis oxid6demo prüfen.

make down

Der Selenium-Container hatte bei mir Probleme mit dem schon vergebenen Port 4444:4444, darum entferne ich diese Zeile aus der docker-compose.yaml in der Seleniums-Sektion und starte die Container neu …

make up

Super, auch Selenium läuft. Endlich kann ich Codeceptions-Tests direkt lokal testen …

Jetzt noch phpStorm und xDebug zum laufen bekommen.

In phpStorm unter File > Settings > PHP taucht der CLI-Interpreter des Containers noch nicht auf. Also hinten links, über die drei Punkte weiter + (add) weiter “select CLI Interpreter” > From Docker, Vagrant, VM, WSL, Remote > Configure Remote PHP Interpreter > Radio-Box “Docker” > Server Docker > Button New > Im sich öffnenden Fenster alles so stehen lassen und warten bis unten links der Hinweis kommt “Connection successful”. Dann mit mehreren Klicks auf “Ok” alle sich geöffneten PopUps wieder schließen. In der Liste der CLI-Interpreter stand jetzt mein neues PHP mit Version 8.0.20 und xDebug 3.1.3. Perfekt!
Weiter alle Fenster schließen und in den php-Storm-Settings in die xDebug-Validation wechseln. Hier im PopUp “Validate Debugger Configuration on Web Server” passte ich den Pfad an auf:

\\wsl$\Ubuntu\home\user\projects\oxid6demo\source\source

Und als URL

http://localhost.local/

Alles grün! WOW! Und der erste Breakpoint-Test klappte auch.

Fazit: Das Tempo ist berauschend. Ubuntu-User lächeln jetzt sicher müde, aber für mich war das mein WOW!-Erlebnis der letzten Woche.
In den nächsten Tagen probiere ich weiter. Die Rezepte sind ja für einen sehr schnellen Einstieg gedacht. Wenn man sich die genau anschaut, dann erkennt man den Ansatz, den das Core-Team dort verfolgt. Sicher kann man auch auf die Rezepte verzichten und direkt mit dem SDK ein eigenes OXID-Projekt lokal aufziehen. Nach Rücksprache mit dem Core-Team kommt demnächst noch ein selbst signiertes SSL-Zertifikat mit rein, sodass man gleich mit https:// lokal arbeiten kann. Für den Zwischenmoment geht es auch mit NGROK.

Darum Daumen hoch und ein Dank an das Core-Team für das SDK das zu 99,8% auch in Windows 10 WSL2 sofort läuft!

1 Like

Ja, leider gibt es bei der Konfiguration von WSL2 viele Stoplerfallen. Eine davon ist die Hardware Anforderungen an Deinen Rechner. Vorab also immer prüfen ob Hardwareanforderungen für WSL2 erfüllt sind.

In PHPStorm dann noch eigene Variable in idea.properties anlegen mit

idea.case.sensitive.fs=true

und PHPStorm bietet auch ein PHP WSL Support Plugin was man sich installieren und aktivieren sollte.

Microsoft hat eine sehr gute Dokumentation zum Einstieg unter Erste Schritte mit Docker-Containern in WSL | Microsoft Docs einen Blick werfen.

Bei Docker sollte WSL Integration über Ubuntu aktiviert sein in den Einstellungen:

Oder wer dem Englischen mächtig ist Windows Subsystem for Linux Documentation | Microsoft Docs

Längerfristig wäre es immer eine Überlegung wert sich ein natives Ubuntu parallel zu Windows zu installieren. Daran könnte man deutlich mehr Freude haben auf Dauer. Da Windows den Konfigurationsaufwand deutlich erhöht.

Gehe persönlich von 2 von 5 Arbeitstagen in der Woche aus, die man sich mit Windows Konfiguration beschäftigt statt zu entwickeln.