Devilbox – Docker Container für lokale Entwicklung

Im Laufe der letzten Jahre bei unterschiedlichen Kunden und Projekten gab es unzählige Entwicklungsumgebungen. Angefangen bei XAMP, WAMP bis hin zu Vagrant und dann Docker. Ja Hip und In musste es immer sein. Im großen und ganzen hatte aber alles immer sein pro und contra. Nungut, aktuell ist halt gerade der Wal, Docker, die Wahl und für Docker jetzt die Devilbox.

Unzählige Container und wenig brauchbare

Ich arbeite beruflich viel mit OXID und auch hierfür gibt es unzählige Docker Container die dafür gedacht sein sollen. Keiner davon ging aber Reibungslos einzurichten. Mimimi bei Windows musst aber noch das machen, auf dem MAC läufts blablabla. Im allgemeinen habe ich viele dieser Container auf Ubuntu als auch auf Windows probiert und jedesmal ging irgendetwas nicht oder war massiv umständlich zum nachinstallieren. Dreck.

Devilbox – nerv … besser … oh ganz geil

Dann kam die Devilbox auf. Zu Beginn, muss ich ja gestehen, hat sie mich ganz schön genervt. Dies ging nicht, das ging nicht. Nach und nach dann aber wurde sie immer attraktiver. Multi Projekt einsetzbar, in Vergangenheit ein Container ein Projekt, und simple modifizierbarkeit. GEIL.

Devilbox Konfigurationen ohne Ende

Devilbox bietet eine Fülle an Möglichkeiten. Beginnend von PHP 5.2 bis PHP 8. Apache oder Nginx. MySQL 5-8 oder MariaDB. Redis, Memcache, MongoDB… einfach unglaublich! Wer jetzt denkt, da brauch ich doch nicht die hälfte, lass sich gesagt sein, früher oder später ist es praktisch nicht wieder zu schauen wie man etwas reinbekommt. Also warum nicht einfach alles gleich haben?

Devilbox Konfiguration für OXID 6.x

Eine gute funktionierende Konfiguration für OXID ist folgende:

PHP_SERVER = 7.2 (7.1 oder 7.3 passen natürlich auch)
HTTPD_SERVER = apache-2.4 oder nginx-stable
MYSQL_SERVER = mysql-5.7

Diese Einstellungen werden in der env Datei in devilbox root eingetragen. Speziell für OXID war es bei mir wichtig den mysql 5.7 zu nutzen da es sonst Probleme gab.

Zend Guard für PHP 5.6 – speziell für ältere OXID Versionen

Im Devilbox Verzeichnis mod finden sich die unterschiedlichen PHP Versionen. Hier einfach die ZendGuardLoader.so reinkopieren. Als Beispielpfad: devilbox\mod\php-fpm-5.6\ZendGuardLoader.so

Anschließend muss dann ein ini File im Verzeichnis: cfg/php-ini-5.6 angelegt werden. Dabei sind die führenden Ziffern des Dateinamens dafür gedacht vor den eigentlichen Einstellungen geladen zu werden. Als Beispieldateiname: 00-zendguard.ini. Dieses .ini File müsste also im Verzeichnis cfg/php-ini-5.6 liegen. Der Inhalt der Datei sieht wie folgt dann aus:

[ZendGuardLoader]
zend_extension = /usr/lib64/php/custom-modules/ZendGuardLoader.so
zend_loader.enable = 1
zend_loader.disable_licensing = 0

IonCube loader in Devilbox aktivieren

Den IonCube loader zu aktivieren ist denkbar einfach. Einfach in der env Datei nach PHP_MODULES_ENABLE suchen. Hierbei einfach folgendes anfügen:

PHP_MODULES_ENABLE=ioncube

Mailhog in Devilbox installieren

Die Devilbox bringt von Haus aus die Möglichkeit gesendete Mails anzusehen. Dies ist aber bei weitem für den alltäglichen Gebrauch nicht praktikabel. Aber den Mailhog zu installieren ist hier auch kein Problem!

Im Verzeichnis compose befinden sich docker-compose.mailhog.yml_x Files. Hier einfach die Datei docker-compose.override.yml-mailhog in docker-compose.override.yml umbenennen.

Nun einfach im cfg Verzeichnis, speziell dem Subverzeichnis php-ini-7.2 (entsprechend der aktuellen PHP Version das Verzeichnis auswählen) eine phpmailhog.ini mit folgendem Inhalt anlegen:

[mail function]
sendmail_path = '/usr/local/bin/mhsendmail --smtp-addr="mailhog:1025"'

Nun ist Mailhog unter folgender Adresse aufzurufen: http://localhost:8025/

Projekte mit eigener lokaler „Domain“ anlegen

Einzelne Projekte können im Verzeichnis data/www angelegt werden. Anhand des Beispiel OXID sähe der Pfad dann wie folgt aus: devilbox/data/www/oxidce/htdocs. Aber warum das htdocs? Dies ist einer der Punkte von Devilbox die notwendig sind. So wird unter den Virtual Hosts das Projekt dann auch erst angezeigt. Ohne htdocs wird es mit Error und dem Hinweis, dass das Verzeichnis htdocs fehlt rot gekennzeichnet. Warum das so ist habe ich aus Faulheit bisher nicht recherchiert. Doch damit ist das ganze noch nicht erledigt. Nun brauchen wir noch einen referenzierenden Eintrag in der hosts. Diese Datei findet sich bei Windows unter folgendem Ort: C:\Windows\System32\drivers\etc. Hierbei aber darauf achten das der etc Ordner höchstwahrscheinlich versteckt ist und nicht angezeigt wird! Die Datei hosts muss nun mit Admin rechten geöffnet werden. Hier kann dann einfach ein neuer Eintrag hinzugefügt werden. Für unser Projekt oxidce würde der Eintrag wie folgt aussehen:

127.0.0.1 oxidce.loc

Der Domain Name muss dem Ordnernamen hierbei entsprechen! Wenn hier nun alles korrekt eingetragen ist, wird das Projekt in den Virtual Hosts auch grün korrekt angezeigt.

Mehr Informationen zu Devilbox

Die Devilbox hat eine ausgesprochen gute Dokumentation, in der eigentlich alle Fragen beantwortet werden. Diese Doku findet ihr auf englisch hier: https://devilbox.readthedocs.io/en/latest/index.html