© saicle/Shutterstock.com
PHP Magazin
Die eigene Toolchain im Docker-Container testen

Dockerize your Toolchain!

Mittlerweile nutzt fast jeder Entwickler Tools zur statischen Codeanalyse, zur Ausführung von Tests und zur fortwährenden Prüfung des Codestyles im Projekt. Aber wie kann uns Docker dabei helfen? Und welchen Vorteil habe ich dadurch gegebenenfalls in Legacy-Projekten?

Tommy Mühle


Jeder Entwickler kennt sie: Tools wie PHPUnit, PHPStan oder PHP_CodeSniffer, um nur einige zu nennen, können im Programmieralltag helfen, qualitativen, einheitlich formatierten und testbaren Programmcode zu schreiben. Sie sind oft elementare Bestandteile des lokalen Entwicklungsprozesses, die routinemäßig in jedem Projekt eingesetzt werden.

Oft sind sie auch bereits fest in der Continuous Integration (CI) Pipeline verankert. Direkt als Abhängigkeit des Projekts via Composer oder autark als PHAR-Datei via Phive [1] installiert, kann das Projekt jederzeit analysiert und getestet werden.

Warum dockerized Tools?

Dieses Set-up bedingt jedoch, dass das Hostsystem entsprechend präpariert ist – von der entsprechend benötigten PHP-Version über diverse PHP Extensions bis zum Vorhandensein bestimmter Libraries. Bearbeite ich verschiedene Projekte, die unterschiedlichste technische Entwicklungsstände aufweisen oder gar ältere PHP-Versionen voraussetzen, führt das dazu, dass das System entsprechend belastet wird.

Warum also nicht auch die eigene Toolchain in Docker-Container packen und in der bestmöglichen Laufzeitumgebung und mit allen benötigten Abhängigkeiten laufen lassen? Denn mittlerweile laufen am Ende auch viele PHP-Projekte produktiv bereits in einem Docker-Container, oft orchestriert von Kubernetes oder Docker Swarm.

Wie funktioniert das?

Die Funktionsweise ist dabei recht simpel. Als Basis dient oft eine leichtgewichtige Linux-Distribution wie Alpine [2]. In diese werden die erforderliche PHP-Version, die notwendigen PHP-Erweiterungen und das Tool selbst als PHAR-Datei oder global via Composer vorinstalliert. Auch benötigte PHP-ini-Einstellungen werden gesetzt und ein entsprechender Mountpoint wird festgelegt, auf den die Daten unserer Projekte später eingehängt werden können.

Und mittlerweile findet man im Docker Hub [3] auch mindestens ein fertiges Image zu den gängigsten Tools des PHP-Ökosystems, das man direkt nutzen kann.

PHP-5-Legacy-Code analysieren

Während dieser Artikel entstand, war die PHP-Version 7.3 bereits verfügbar. Und dennoch läuft ein nicht geringer Teil der Webseiten und Applikationen weltweit auch heutzutage noch mit PHP 5 [4]. Wer selbst auch noch ältere Codebases betreut und dennoch statische Codeanalysetools wie z. B. PHPStan oder churn-php einsetzen möchte, die jedoch mindestens PHP 7 erfordern, kann das mit diesem Ansatz ebenfalls tun. Denn der zu analysierende Code wird dabei nicht im Container ausgeführt, sondern nur gemountet und analys...

PHP Magazin
Die eigene Toolchain im Docker-Container testen

Dockerize your Toolchain!

Mittlerweile nutzt fast jeder Entwickler Tools zur statischen Codeanalyse, zur Ausführung von Tests und zur fortwährenden Prüfung des Codestyles im Projekt. Aber wie kann uns Docker dabei helfen? Und welchen Vorteil habe ich dadurch gegebenenfalls in Legacy-Projekten?

Tommy Mühle


Jeder Entwickler kennt sie: Tools wie PHPUnit, PHPStan oder PHP_CodeSniffer, um nur einige zu nennen, können im Programmieralltag helfen, qualitativen, einheitlich formatierten und testbaren Programmcode zu schreiben. Sie sind oft elementare Bestandteile des lokalen Entwicklungsprozesses, die routinemäßig in jedem Projekt eingesetzt werden.

Oft sind sie auch bereits fest in der Continuous Integration (CI) Pipeline verankert. Direkt als Abhängigkeit des Projekts via Composer oder autark als PHAR-Datei via Phive [1] installiert, kann das Projekt jederzeit analysiert und getestet werden.

Warum dockerized Tools?

Dieses Set-up bedingt jedoch, dass das Hostsystem entsprechend präpariert ist – von der entsprechend benötigten PHP-Version über diverse PHP Extensions bis zum Vorhandensein bestimmter Libraries. Bearbeite ich verschiedene Projekte, die unterschiedlichste technische Entwicklungsstände aufweisen oder gar ältere PHP-Versionen voraussetzen, führt das dazu, dass das System entsprechend belastet wird.

Warum also nicht auch die eigene Toolchain in Docker-Container packen und in der bestmöglichen Laufzeitumgebung und mit allen benötigten Abhängigkeiten laufen lassen? Denn mittlerweile laufen am Ende auch viele PHP-Projekte produktiv bereits in einem Docker-Container, oft orchestriert von Kubernetes oder Docker Swarm.

Wie funktioniert das?

Die Funktionsweise ist dabei recht simpel. Als Basis dient oft eine leichtgewichtige Linux-Distribution wie Alpine [2]. In diese werden die erforderliche PHP-Version, die notwendigen PHP-Erweiterungen und das Tool selbst als PHAR-Datei oder global via Composer vorinstalliert. Auch benötigte PHP-ini-Einstellungen werden gesetzt und ein entsprechender Mountpoint wird festgelegt, auf den die Daten unserer Projekte später eingehängt werden können.

Und mittlerweile findet man im Docker Hub [3] auch mindestens ein fertiges Image zu den gängigsten Tools des PHP-Ökosystems, das man direkt nutzen kann.

PHP-5-Legacy-Code analysieren

Während dieser Artikel entstand, war die PHP-Version 7.3 bereits verfügbar. Und dennoch läuft ein nicht geringer Teil der Webseiten und Applikationen weltweit auch heutzutage noch mit PHP 5 [4]. Wer selbst auch noch ältere Codebases betreut und dennoch statische Codeanalysetools wie z. B. PHPStan oder churn-php einsetzen möchte, die jedoch mindestens PHP 7 erfordern, kann das mit diesem Ansatz ebenfalls tun. Denn der zu analysierende Code wird dabei nicht im Container ausgeführt, sondern nur gemountet und analys...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang