
Werkzeuge, die wir bei der Arbeit verwenden - Teil 2 - Docker
Im ersten Artikel über die von uns verwendeten Tools haben wir unsere Projektmanagement- und Kommunikationstools beschrieben. Heute zeigen wir Ihnen, wie wir Entwicklungsumgebungen verwalten.
Lokale Kopie
Bei Droptica arbeitet jeder Programmierer an einer lokalen Kopie der Website. Jede Aufgabe wird abgeschlossen und in einem separaten Git-Branch festgeschrieben und in ein Remote-Repository gepusht.
Unser Standardsystem ist Ubuntu, daher kamen wir lange Zeit damit aus, einfach Apache, MySQL und PHP lokal zu installieren. Meistens reicht dies aus, um ein Projekt einzurichten und erfolgreich daran zu arbeiten. Mit der Zeit wurden jedoch die Projekte, an denen wir arbeiten, immer komplexer und benötigten zusätzliche Software und Dienste (z. B. Apache Solr, Elasticsearch, Memcache, Redis, ffmpeg konvertiert etc.). PHP7 kam heraus und damit das Bedürfnis, einige Projekte mit PHP7 auszuführen, während einige noch auf PHP5 laufen. All dies machte die Arbeit an mehreren Projekten gleichzeitig schwieriger.
Docker
Docker hat uns geholfen, dieses Problem zu lösen. Kurz gesagt, ermöglicht Docker das Ausführen von Diensten und Apps in isolierten Containern. Zum Beispiel können Sie Apache mit PHP7 und PHP5 gleichzeitig in 2 Containern für dasselbe Projekt ausführen oder 2 verschiedene Versionen von MySQL verwenden. Jedes Projekt hat seine eigene Umgebung, die in Containern kapselt ist, und ein Entwickler kann mehrere Projekte lokal ausführen, ohne dass es zu Interferenzen kommt.
So großartig Docker auch ist, es ist nicht sehr benutzerfreundlich. Es wird von der Kommandozeile aus bedient und erfordert, dass Sie lange, schwer zu strukturierende Befehle eingeben, um kompliziertere Umgebungen einzurichten. Um dabei zu helfen, verwenden wir Docker-Compose, mit dem Sie Container und deren Setup in einer YML-Datei deklarieren können.
Das war schon großartig, aber wir stießen immer noch auf Probleme. Es ist toll, Apache, MySQL und PHP in verknüpften Containern einzurichten, aber wie gelangen Sie dorthin und arbeiten damit? Es gibt kein Drush, es könnten andere Tools sein, die Sie verwenden möchten, wie Fabric, Compass, Gulp und dergleichen, die wirklich nicht in Ihren Produktionsbildern installiert werden sollten. Um dies zu verwalten, haben wir Docker-Drupal erstellt - eine in Python geschriebene Anwendung, die uns bei der Entwicklung hilft. Nach der Installation haben Sie Zugriff auf einen Docker-Drupal-Befehl. Dieser Befehl verwendet unser 'development' Docker-Image, das sich an die Umgebung anbindet und Befehle für Sie ausführen kann. Dieses Image hat standardmäßig Drush installiert und ein paar weitere Elemente. Je nach Projekt fügen wir oft zusätzliche Elemente hinzu. Die Docker-Drupal App ist leicht erweiterbar. Sie können Ihre eigenen Befehle und Aktionen hinzufügen. Beispielsweise könnten Sie eine Funktion schreiben, die zwei Datenbanken importiert, ein Migrationsskript ausführt, ein paar Module aktiviert und Such-API-Indizes neu erstellt.
Seit der Einführung von Docker-Drupal erfordert der Start eines neuen Projekts bei Droptica normalerweise das Klonen des Repositorys und das Ausführen von "drocker-drupal up && drocker-drupal build". Nach ein paar Minuten steht dem Entwickler eine vollständig funktionierende Website in einer Umgebung zur Verfügung, die mit der Produktionsumgebung identisch ist, mit allen Diensten in den gleichen Versionen. Docker-Drupal wurde von unseren Teammitgliedern Tomasz Wodzikowski und Damian Sikora geschrieben. Die Demonstration in Form eines Videos ist verfügbar auf YouTube.
Zusammenfassung
Docker und einige seiner Plugins gehören zu unseren grundlegendsten Werkzeugen. Bei der Drupal-Entwicklung benötigen wir keine anderen Mittel zur Vorbereitung der Serverumgebung. Meiner Meinung nach ist es eine großartige und flexible Lösung. Es spart uns jedes Jahr viele Arbeitsstunden.