Die Docker Devilbox
Das Devilbox Project ist ein fertiges LAMP Stack für Docker. Wenn du die Docker-Toolbox einsetzt, sind diese Angaben der Dokumentation lesenswert.
Info
Um die Devilbox nutzen zu können muss Docker und Docker Compose auf deinem System installiert sein. Falls das noch nicht der Fall ist, kannst du dir die Devilbox Prerequisites Dokumentation für mehr Informationen zur Installation dieser Programme durchlesen.
Devilbox installieren und konfigurieren
Es ist keine Installation im eigentlichen Sinne notwendig. Du musst dir nur die Dateien von der
Devilbox GitHub-Seite in ein leeres Verzeichnis herunterladen. Die Konfiguration
erfolgt über eine einzelne Datei. In deinem Verzeichnis findest du die Datei env-example. Kopiere diese und benenne
die Datei anschließend in .env um. In der neuen Datei kannst du jetzt deine Konfigurationen vornehmen. Notwendig sind
Änderungen der folgende Einträge:
Die einzelnen Schritte (gerade auch für die Einträge NEW_UID und NEW_GID) sind in der
Devilbox Dokumentation
gut beschrieben. Für Contao selbst sollten die weiteren Einträge so gesetzt werden:
HTTPD_DOCROOT_DIR=DOCUMENT-ROOT(DOCUMENT-ROOT =public(bis und mit Contao 4.11web), siehe auch Hosting-Konfiguration)HTTPD_SERVER=apache-2.4PHP_SERVER=8.2MYSQL_SERVER=mariadb-10.3
Info
Nach jeder Änderung der Konfiguration über die .env Datei muss die Devilbox neu gestartet werden.
Warnung
Lösche keine Einträge in der .env Datei! Zum Beispiel ist standardmäßig der Eintrag HTTPD_SERVER=nginx-stable
gesetzt und #HTTPD_SERVER=apache-2.4 ist auskommentiert (s. # am Anfang der Zeile). Zur Änderung derartiger
Einträge musst du diese kommentieren bzw. auskommentieren. Ändere unbedingt auf HTTPD_SERVER=apache-2.4. Als Webserver
könnte nginx genutzt werden. Für Contao sind dann allerdings weitere Konfigurationen des Webservers notwendig.
Die Devilbox starten
Wechsle nun in das Verzeichnis und starte die Devilbox mit Docker:
docker-compose up httpd php mysqlErstmalig kann es etwas dauern, da zunächst die jeweiligen Docker Images geladen und die Container erstellt werden müssen. Ausserdem wird empfohlen, den ersten Start im Vordergrund auszuführen, damit etwaige Fehler besser sichtbar werden.
Erneute Starts sind dann wesentlich schneller und können im Hintergrund (Option -d) ausgeführt werden:
docker-compose up -d httpd php mysqlDie Devilbox beenden
Die Devilbox sollte durch den Stop aller Container und anschliessendem Löschen aller Container beendet werden.
docker-compose stop
docker-compose rm -fDas Devilbox-Dashboard im Browser
Ist die Devilbox gestartet, kannst du nun deinen Browser aufrufen. Mit Eingabe von http://127.0.0.1 erreichst du
das Devilbox-Dashboard. Über die Navigation erhältst du Zugriff auf die verschiedenen Funktionen.
Info
Die zu verwendende IP-Adresse ist abhängig von deiner Docker-Umgebung. Wenn du die Docker-Toolbox installiert hast,
lautet deine IP-Adresse möglicherweise anders. Die IP-Adresse kann über den Befehl docker-machine ip ermittelt werden.
| Navigation | Beschreibung |
|---|---|
| Home | Status-Informationen |
| Virtual Hosts | Liste vorhandender vHosts bzw. Webseiten |
| C&C | Kommando und Kontrolle |
| Emails | E-Mail Catch Service |
| Configs | Eigene PHP und HTTPD Konfiguration |
| Databases | Infos zu den Datenbanken |
| Info | Weitere Informationen |
| Tools | Zugriff auf Tools wie z. B. phpMyAdmin |
Contao-Installation vorbereiten
Eine oder mehrere Contao-Installationen werden im Devilbox-Verzeichnis data/www erstellt. Je Contao-Installation
musst du hier ein separates Verzeichnis anlegen. Der Verzeichnisname entspricht dann dem späteren vHost-Namen. Aus dem
Verzeichnisnamen contao4 resultiert dann contao4.loc.
Damit der vHost-Name aufgelöst werden kann, musst du noch in /etc/hosts den Eintrag 127.0.0.1 localhost in
127.0.0.1 contao4.loc abändern.
Du hast ein Verzeichnis (z. B. contao4) erstellt. Wechsle in dieses Verzeichnis und erstelle einen neuen Unterordner
public (bis und mit Contao 4.11 web). Kopiere in diesen Ordner die Contao Manager .phar Datei und benenne die
Datei in contao-manager.phar.php um.
Info
Die Domain-Suffix .loc ist voreingestellt. Dies kann aber in der .env Datei über den Eintrag TLD_SUFFIX geändert
werden.
Info
Die manuelle Bearbeitung der »/etc/hosts« kann u. U. vernachlässigt werden. Die »Devilbox« bietet hierzu eine
Auto DNS Funktionalität an.
Info
Ab Devilbox 3 kannst du auch das TLD-Suffix dvl.to verwenden. Damit werden automatisch alle *.dvl.to auf
127.0.0.1 geleitet.
Installation über den Contao Manager
Starte phpMyAdmin im Devilbox-Dashboard im Bereich Tools/phpMyAdmin und lege eine neue Datenbank an. Wechsle dann
in der Navigation auf die Seite Virtual Hosts. Hier solltest du nun eine Liste deiner vorhandenen Web-Projekte sehen
und auch gleich aufrufen können. Du kannst jetzt die Contao-Installation über den Contao Manager aufrufen. In unserem
Beispiel also über: contao4.loc/contao-manager.phar.php.
Die weitere Vorgehensweise ist dann identisch wie in Contao installieren beschrieben.
Installation über die Kommandozeile
Das PHP Memory Limit für die PHP-Container der Devilbox ist standardmässig zu niedrig und muss daher für die
Composer-Nutzung zuvor konfiguriert werden. Wechsle dazu in das Verzeichnis cfg. Hast du die Devilbox mit PHP 8.2 in
der .env konfiguriert, mache die folgenden Änderungen dann entsprechend im Verzeichnis cfg/php-ini-8.2. Erstelle
hier eine Datei memory_limit.ini mit folgendem Eintrag:
[PHP]
memory_limit = -1Im Anschluss musst du die Devilbox neu starten. Im Devilbox-Hauptverzeichnis liegen die Dateien shell.sh bzw.
shell.bat. Damit kannst du dich in den laufenden Devilbox PHP-Container (die Devilbox-shell) einklinken. Hier sind
bereits zahlreiche Tools vorinstalliert
(unter anderem Composer). Nach Aufruf befindest du dich im Container im Verzeichnis shared/http. Zur Installation
von z. B. Contao 5.6 in ein Verzeichnis contaocms musst du lediglich eingeben:
composer create-project contao/managed-edition contaocms 5.6Lege dir eine neue Datenbank an:
mysql -u root -h mysql -p -e 'CREATE DATABASE db_contaocms;'Tipp
Halte die Devilbox-Shell in einem separaten Terminal-Fenster während deiner Arbeit offen. Contao-Kommandos geben in der Devilbox-Shell u. U. mehr Informationen preis als wenn sie unter dem Host ausgeführt werden, z. B.:
vendor/bin/contao-console cache:warmup --env=dev -vAngaben im Contao-Installtool
Die Angaben im Contao-Installtool sind grundsätzlich identisch. Du musst
lediglich bei Datenbankverbindung auf folgende Einträge achten:
| Eintrag | Wert |
|---|---|
| Host | mysql |
| Benutzername | root |
| Passwort | Keinen Wert eintragen |
Info
Der Benutzer root mit leerem Passwort ist die Devilbox Standard Einstellung. Dies kann über die
Konfiguration
geändert werden. In diesem Fall musst du im Contao-Installtool deine Werte entsprechend eintragen.
Nützliche Informationen: Mehrere php Versionen parallel betreiben (ab devilbox 3)
Die Grundeinstellung nimmst du im Devilbox-Verzeichnis vor.
Im Verzeichnis compose findest du die Datei docker-compose.override.yml-php-multi.yml. Kopiere die Datei in das
Devilbox-Hautpverzeichnis und ändere den Dateinamen nach »docker-compose.override.yml«.
Du hast ein Projekt
Lege in diesem Projektverzeichnis ein Verzeichnis .devilbox und darin eine Datei backend.cfg mit diesem Inhalt an:
conf:phpfpm:tcp:php74:9000 Starte Devilbox wie folgt:
docker-compose up php httpd bind php74Info
Ein Beispiel:
| Projekt | .env php-Version | backend.cfg vorhanden? | bind Option | Projekt läuft unter |
|---|---|---|---|---|
| contao5 | 8.2 | Nein | - | 8.2 |
| contao4 | 8.2 | Ja | php74 | 7.4 |
Tipp
Du kannst in jedem Projektverzeichnis prophylaktisch die backend.cfg anlegen und den Inhalt auskommentieren, wenn das Projekt nicht gesondert behandelt werden soll.
Tipp
Im Devilbox-Dashboard siehst du unter Virtual Hosts in der Spalte Backend, welche PHP-Version tatsächlich für ein
Projekt im Einsatz ist. (Noch gibt es dort einen kleinen Fehler: Auskommentierte Konfigurationen werden nicht als
passiv erkannt.)
Nützliche Informationen: PHP Xdebug
Im Devilbox-Handbuch findest du eine nicht ganz aktuelle Dokumentation, die aber das grundsätzliche Vorgehen gut aufzeigt.
In meiner IDE funktioniert folgende Konfiguration sehr gut:
{
//
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/shared/httpd/": "${workspaceFolder}/projects/"
},
"log": true,
"stopOnEntry": true
},
.
.
.
]
}Erstelle eine xdebug.ini im jeweiligen Verzeichnis devilbox/cfg/php-ini-x.y mit diesem Inhalt
; PHP.ini configuration
;
[PHP]
; Defaults
xdebug.mode = debug
xdebug.remote_handler = dbgp
xdebug.start_with_request = yes
; How to connect
xdebug.client_port = 9003
xdebug.client_host = host.docker.internal
xdebug.discover_client_host = false
; Logging
xdebug.log = /shared/httpd/xdebug.log
xdebug.log_level = 7
; IDE Configuration
xdebug.idekey = VSCODE