Docker

Containervirtualisierung

Docker ist eine freie Software zur Container-Virtualisierung von Anwendungen und der aktuelle Industriestandard in diesem Bereich. Diese virtualisierten Anwendungen können mit Docker dann inklusive ihrer Abhängigkeiten in ein Image gepackt und so einfach auf verschiedenen Systemen genutzt werden, ohne sich Sorgen um Interoperabilität machen zu müssen.
Virtualisierung
Micro-Services
Cloud
Rancher
Infrastructure as Code
Kubernetes-Cluster
Serverless
Quadrant
Tools
Mein Level

Mit dem Einsatz von Docker erhält man als Entwickler zudem eine enorme Flexibilität und muss sich nicht mehr Sorgen machen, dass z. B. eine bestimmte PHP-Version, PHP-Erweiterung, PHP-Einstellungen oder Variablen auf dem Hostsystem nicht verfügbar sind. Im Dockerfile können diese einfach selbst definiert und verändert werden. Bei richtiger Anwendung stellt man so auch sicher, dass keine falschen Einstellungen (Error_Reporting, Exposing, xDebug) im Produktivsystem auftreten können.

Mit dem Einsatz von Docker können Anwendungen im Allgemeinen zudem viel sicherer gestaltetet werden, da eine Kapselung als Service und deren Zugriffsebenen besser geregelt werden können. Ein Beispiel hierfür ist ein Backend-Service wie z. B. eine MySQL-Datenbank nur innerhalb der Container erreichbar ist und Zugriffe von außen nicht möglich sind.


Lokale Entwicklungsumgebungen mit Docker & DDEV

Bei der lokalen Entwicklung habe ich in der Vergangenheit einige Systeme und Tools ausprobiert und bin von XAMPP, über Virtualbox, Vagrant mit Puphpet und selbst eingerichtete lokale Entwicklungsumgebungen gewechselt, war aber nie wirklich zufrieden. Entweder war der initiale Aufwand beim Aufsetzen zu hoch oder die Abstriche bei der Flexibilität haben mich einfach sehr gestört.

Auf einer TYPO3-Konferenz habe ich dann das Open-Source-Tool DDEV kennengelernt und war sofort begeistert. Um es vorwegzusagen, ich bin immer noch sehr zufrieden und DDEV kommt mittlerweile bei allen meinen Webprojekten zum Einsatz.

drud-ddev-header-techradar.jpg

Was DDEV für mich so interessant macht, ist besonders die Möglichkeit zu haben, PHP-Projekte mittels CLI mit einem Befehl lauffähig als eigenständige Instanz (gekapselt in Docker-Containern) aufsetzen zu können. Das Hosts-Handling (virtuelle Domains) funktioniert dabei auch voll automatisch ;) Perfekt

Zudem ist es sehr einfach, Konfigurationseinstellungen für das Projekt durchzuführen und weitere Services wie z. B. Solr, ElasticSearch, Redis oder Memcached aufzusetzen. Ein weiterer Pluspunkt liegt in der xDebug-, Mailhog- und PHPMyAdmin-Integration, sowie der Optiondie PHP-Version, Webserver und Datenbanksystem wechseln zu können. Auf Wunsch kümmert sich DDEV auch um einen Reverse Proxy ins World Wide Web. Also alles sehr komfortabel und ein echt guter Startpunkt, um schnell mit dem Entwickeln loslegen zu können.

Insbesondere bei der Entwicklung von TYPO3-Websites hat sich der Umstieg auf DDEV für mich mehr als bezahlt gemacht und ich würde es auch jedem anderen TYPO3- oder PHP-Entwickler empfehlen, mal einen Blick auf DDEV zu werfen.

Weitere Informationen zu DDEV finden Sie unter:
ddev.readthedocs.io

Vom Docker-Image zum Kubernetes-Cluster mit Rancher

Bei mittelgroßen Projekten (vorher lohnt es sich meistens aufgrund der Kosten/Anforderungen nicht) baue ich standardmäßig Docker-Container der Anwendung mittels vordefinierter GitLab-Pipelines und speichere diese in verschiedenen Versionen (stable, dev-master, tags) in meiner eigenen Container Registry.

Im Kubernetes-Cluster lassen sich dann schnell Services aus den Images der Container-Registry initialisieren und starten. So es ist mir möglich, voll automatisiert eigenständige Staging- und Produktiv-Umgebungen aufzubauen und neue Features komfortabel im geschützten Rahmen abnehmen zu lassen. Ein weiter Vorteil für mich ist hier die Möglichkeit zu haben, Container miteinander zu verbinden und einen Zugriff von außen trotzdem zu unterbinden. So ist z. B. die ElasticSearch-Instanz nur vom Web-Container aus erreichbar.

kubernetes-rancher-cluster-typoniels.jpg

Für das Management meiner Kubernetes-Cluster als Kubernetes-as-a-Service kommt dabei die Open Source Software Rancher zum Einsatz. Rancher fungiert hier als zentrale Steuerungsinstanz und ermöglicht eine benutzerfreundliche Verwaltung und Überwachung der Infrastruktur. Ist mal zu wenig Rechenleistung im Cluster vorhanden, ist eine Skalierung durch das Schalten weiterer Server dank einer API-Schnittstelle easy möglich.

Informationen zu Rancher finden Sie unter:
rancher.com

Möchten Sie noch mehr erfahren?

Sie benötigen Hilfe bei ihrem Webprojekt?Lassen Sie uns gemeinsam ihr nächstes Projekt rocken!