Entwicklungumgebung: Windows 11 + WSL 2 + Docker

Nachdem ich die letzten Jahre mit macOS unterwegs war, bei dem das Zusammenspiel mit Docker schon immer eine große Hürde dargestellt hat – eine Hürde, die mit dem Wechsel von x64 zu arm64 eher noch größer geworden ist – war ich nun wieder auf der Suche nach einer Plattform, auf der ich große Projekte ohne Probleme mit Docker betreiben kann, ohne den Code umständlich mit Mutagen zu synchronisieren.

Was die gesamten Tools betrifft, wäre Linux hier klar die Präferenz, aber ich habe auf dem Desktop noch keine Distribution gefunden, deren grafische Oberfläche mir zusagt. Zudem wird zwingend ein E-Mail-Programm benötigt, das gut mit Exchange umgehen kann. Thunderbird mit Plugins bzw. Evolution sind an dieser Stelle einfach zu hässlich – und noch dazu langsam. Die Alternative, die ganze Zeit einen Browsertab mit der Weboberfläche offen zu haben, kommt für mich auch nicht infrage.

Die erste Version von WSL hatte ihre Tücken und war nicht gerade schnell – es sei denn, man half mit den gleichen Tricks wie bei macOS nach, um die Performanceprobleme mit der Dateisynchronisation in den Griff zu bekommen.

WSL 2 ist an dieser Stelle um einiges schneller, vor allem was die Integration von Docker betrifft. Solange sich der Code innerhalb der WSL-Umgebung befindet und nicht vom Hostsystem gemountet wird, ist die Geschwindigkeit nahezu mit einer nativen Linux-Installation vergleichbar. Im Gegensatz zu nativem Linux sind HiDPI-Displays jedoch kein Problem, und mit Outlook steht auch ein ansehnlicher E-Mail-Client zur Verfügung.

Ich kann dieses Setup nur weiterempfehlen. Bisher habe ich nichts vermisst, was nur unter macOS oder nativem Linux möglich gewesen wäre – abgesehen von einem SSH-Agenten, der mir das ständige Eingeben der Passphrase für meine Keys abnimmt.

Docker + Windows Subsystem for Linux (WSL)

Bisher musste man, um von der WSL Umgebung auf Docker zuzugreifen, dieses immer doppelt installieren und danach die Environment Variable DOCKER_HOST=tcp://127.0.0.1:2375 setzen.

Was dies betrifft gibt es gute Neuigkeiten.
Mit dem Update auf 1803 kann das WSL unter Windows 10 auch Windows Binaries ausführen.

D.h. Docker muss nicht mehr doppelt installiert werden. Man kann jetzt die Dateien der Windows installation verwenden. Damit dies ohne den Anhang .exe funktioniert, erstellt man am besten Symlinks.

sudo ln -s "/mnt/c/Program Files/Docker/Docker/resources/bin/docker.exe" /usr/local/bin/docker
sudo ln -s "/mnt/c/Program Files/Docker/Docker/resources/bin/docker-compose.exe" /usr/local/bin/docker-compose

Wer Docker an einem anderen Ort installiert hat benutzt einfach which docker.exe und bekommt den richtigen Ordner für den symbolischen Link.

Flackerndes Display bei Dell Vostro 3550 unter Ubuntu

Beim Dell Vostro 3550 gibt es unter Ubuntu einen nervigen Bug. In den ersten ca. 10 Minuten nach dem einschalten, schaltet das Notebook ständig zwischen verschiedenen Displayeinstellungen hin und her. Dabei ist es völlig egal wie oft man diese mit XRandR neu setzt. Noch viel nerviger ist dabei, dass die Maus jedes Mal den Fokus verliert.

Das Problem selbst scheint aber nicht nur Ubuntus Unity zu betreffen, sondern z.B. auch Gnome 3 unter Arch.

Dieses von dem User beschriebene Event wird bei mir auch jedes Mal geworfen, wenn sich das Display wieder mal auf zufällige Werte zurücksetzt. Woher es kommt und wodurch es ausgelöst wird, ist nicht feststellbar. Es scheint aber nur dann aufzutreten wenn der Intel Grafikchip verwendet wird und steht in Zusammenhang mit der hybriden Grafiklösung (Intel/AMD).

Die momentane Lösung besteht also darin dem XServer beizubringen, das er dieses Event einfach ignorieren kann. Dazu erzeugt man eine neue Konfiguration in /usr/share/X11/xorg.conf.d damit diese unabhängig von einer evtl. vorhandenen /etc/X11/xorg.conf verwendet wird.

Diese Datei (10-flickering-fix.conf) enthält folgenden Inhalt:

Section "InputClass"
        Identifier "unknown device that causes display flicker"
        MatchDevicePath "/dev/input/event7"
        Option  "Ignore" "on"
EndSection

Dazu erstellt man ein Script das bei jedem Start ausgeführt wird und den entsprechenden „Video Bus“ deaktiviert.

Das Script 40custom-vostro-fix liegt in /etc/X11/Xsession.d und enthält nur eine Zeile.

xinput disable 8

Howto: Debian 5 (Lenny) mit Lighttpd (Lighty) + PHP 5.3 + Zend Framework

Backports einfügen

PHP Backports von dotdeb.org

deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all


Lighty Backports von bits and pieces

deb http://www.jonmoniaci.com/debian-ppa/ lenny main contrib non-free

Installation

aptitude install lighttpd php5-cgi
lighttpd-enable-mod fastcgi fastcgi-php

VHost einrichten

Wir legen jetzt eine neue Konfigurationsdatei für unseren VHost an.

touch /etc/lighty/available-mods/10-myvhost.conf


Die Datei bearbeiten wir jetzt mit einen beliebigen Editor

$HTTP["host"] == "myhost.example.com" {
	server.document-root = "/pfad/zur/ZF-Anwendung/public"
	url.rewrite-once = (
		".*\.(js|ico|gif|jpg|png|css)$" => "$0",
		".*\?(.*)$" => "/index.php?$1",
		"" => "/index.php"
	)
	setenv.add-environment = (
		"APPLICATION_ENV" => "development"
	)
}


Nun muss die Konfiguration noch aktiviert werden

lighttpd-enable-mod myvhost

Module hinzufügen

Jetzt müssen der Datei “/etc/lighttpd/lighttpd.conf” noch 2 Module hinzugefügt werden

server.modules = (
	#andere Module
        "mod_rewrite",
        "mod_setenv"
)

Konfiguration neu laden

/etc/init.d/lighttpd force-reload


Nachdem die Konfiguration neu geladen wurde, sollte das Ganze wie gewünscht funktionieren.