Symfony in Docker aber schnell

Symfony in Docker aber schnell

19. Juni 2021 0 Von Roger Gerecke

Docker ist eine wundervolle Container-Virtualisierung bloß wenn man Symfony entwickeln will und dann noch auf Windows ist Symfony auf Windows in Docker extrem langsam. Das Problem ist das man die Entwicklungs-Dateien eigentlich in dem Windows Host System hat um sie dort mit einer IDE zu bearbeiten. Darum hier meine Best Patrice Lösung für eine Docker VM die extrem schnell ist mit Symfony. Die Lösung des Problems ist die Symfony Entwicklungs-Dateien wie immer im Windows System zu bearbeiten und sie dann in die WSL 2 zu laden ganz so als würde man mit dem Live Server arbeiten.

Wenn man einmal den Docker-Container aus der Windows WSL 2 gestartet hat kann man Ihn auch aus der PhpStorm IDE starten.

  • Windows 10 WSL 2 Installieren mit (Ubuntu 20.04 LTS)
  • Docker Desktop
  • Symfony via Composer
  • PhpStorm Konfiguration
  • PhpstormProjects Ordner vom Virus Scan ausschließen
  • PhpstormProjects Ordner von den Indexzierungsoptionen ausschließen
  • AutoHotkey installieren

Auf Windows 10 die WSL 2 installieren

Schritt #1 Linux Feature Aktivieren

Win Power-Shell als Admin öffnen übers Startmenu und den Befehl ausführen:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Schritt #2 Virtualisierung Aktivieren

Virtualisierungsfunktionen Aktivieren mit folgenden Befehl in der Power-Shell:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Jetzt Windows neu starten

Schritt #3 Update der WSL auf Version 2

Nach dem Neu Start https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi das Update auf WSL2 Herunterladen und Installieren.

Schritt #4 WSL 2 als Standard einstellen

wsl --set-default-version 2

Ubuntu Distro auf Windows 10

Die installation von von der Ubuntu Distro auf Windows 10 ist nicht sonderlich schwer. Einfach in der Windows-Suche app: ubuntu eingeben und im Windows App Store die gewünschte Distro auswählen und installieren.

Ubuntu 20 Long time support im Windows App Store

Nach der Installation ist das Verzeichnis von Ubuntu über den Verzeichnis-Explorer oder die Konsole erreichbar mit folgendem Kürzel:

\\wsl$

Wir können auch direkt ein Verzeichnis aufrufen:

\\wsl$\Ubuntu\home\your_selectet_wsl_username\symfony

Im Windows Explorer \\wsl$ geöffnet einfach eingeben und Enter

Liste mit den Distros schon vorbereitet für Windows:

Ich habe mich für Ubuntu 20.04 LTS entschieden und dort zusätzliche Werkzeuge installiert:

sudo apt install

PhpstormProjects Ordner vom Virus Scan ausschließen

Unter Windows Viren- & Bedrohungsschutz > Einstellung verwalten > Ausschlüsse hinzufügen und dort einen Prüfungsausschluss hinzufügen für den gesamten PhpstormProjects Ordner hinzufügen.

PhpstormProjects Ordner von den Indexzierungsoptionen ausschließen

Unter Windows Startmenu > Indexierungsoptionen > Benutzer dort den kompletten PhpstormProjects Ordner von der Indexierung ausschließen.

AutoHotkey installieren

Um schnell in den WSL 2 Ordner zu kommen und dort einen neuen Project Ordner anzulegen nutze ich gerne ein AutoHotkey zur Installation: Von https://www.autohotkey.com/ AutoHotkey herunterladen und installieren danach ist mit einem rechtsklick auf dem Desktop die Option > Neu > AutoHotkey Script wir erstellen ein neue .ahk Skript

open wsl2 network folder.ahk

RUN explorer.exe \\wsl$\Ubuntu-20.04\home\youre_wsl_install_username

Wenn wir diese AutoHotkey Skript mit einem Doppelklick ausführen sind wir sofort in dem root Ordner der WSL 2

Einrichtung der Entwicklung’s Umgebung:

  1. Login in wsl2
  2. Navigiere in Sites Ordner
  3. Run git clone https:
  4. docker-compose up -d
  5. Mount Verbindung in PhpStorm einstellen

5# Mount Verbindung in PhpStorm einstellen

Eine Verbindung in die Virtualisierung lässt sich in PhpStorm über einen Mount Punkt hinzufügen unter Tools>Development>Configuration dazu die \\wsl$ Variable nutzen mit dem Ausgewählten und Installierten Linux Distribution.

NEVER USE THIS MOUNT!

Niemals diesen Mount Punkt über das Windows System nutzen sonst ist die ganze Performance dahin! Den Docker-Container über das Shell-Terminal der WSL 2 Distribution erstellen mit docker-compose up -d oder in dem Dockerfile die Pfadangabe explizit setzen.

/mnt/c/Users/

ERROR: Unable to create the “cache” directory symfony

Wenn es den Fehler gibt wegen fehlender Berechtigung auf den VAR Ordner in der WSL 2 Terminal Konsole:

sudo chown -R www-data:www-data var

Probleme FAQ?

Fehler: <strong> Could not create directory "\\wsl$\Ubuntu-20.04\</strong>

Dieser Fehler deutet an das es sich um fehlende Berechtigung auf ein Verzeichnis handelt. Kurz gesagt sind Dateien und Verzeichnisse vom Benutzer bearbeitet werden auch diesem zuzuordnen sudo chown -R user:user docker/data bzw. sind Dateien die von PHP erstellt werden wie der /cache dem Server zuzuordnen sudo chown -R www-data:www-data cache

Alle eingetragen Lokalen Benutzer von Ubuntu anzeigen lassen: cut -d: -f1 /etc/passwd


Fehler: Im apache log file <strong>sh: 1: xyz: Permission denied</strong>

Wenn Ihr z.b. über PHP eine Software über exec() in einem Background Prozess Terminal ausführen last kann in den Apache Log dieser Fehler auftauchen der Anzeigt das für das Terminal die Berechtigung zum Ausführen der Datei fehlt. Zum auflösen des fehlers in der WSL 2 Konsole das Verzeichnis aufrufen in dem das Programm liegt und die Ausführung erlauben mit: sudo chmod +x xyzprogramname

More Information under:

https://www.autohotkey.com/

https://support.microsoft.com/en-us/windows/add-an-exclusion-to-windows-security-811816c0-4dfd-af4a-47e4-c301afe13b26

https://docs.microsoft.com/de-de/windows/wsl/install-win10

https://code.visualstudio.com/docs/remote/wsl