Das Devilbox Project ist ein fertiges LAMP Stack für Docker. Wenn du die Docker-Toolbox einsetzt, sind diese Angaben der Dokumentation lesenswert.
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.
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.11 web
), siehe auch
Hosting-Konfiguration)HTTPD_SERVER=apache-2.4
PHP_SERVER=8.2
MYSQL_SERVER=mariadb-10.3
Nach jeder Änderung der Konfiguration über die .env
Datei muss die Devilbox neu gestartet werden.
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.
Wechsle nun in das Verzeichnis und starte die Devilbox mit Docker:
docker-compose up httpd php mysql
Erstmalig 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 mysql
Die Devilbox sollte durch den Stop aller Container und anschliessendem Löschen aller Container beendet werden.
docker-compose stop
docker-compose rm -f
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.
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 |
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.
Die Domain-Suffix .loc
ist voreingestellt. Dies kann aber in der .env
Datei über den Eintrag TLD_SUFFIX
geändert
werden.
Die manuelle Bearbeitung der »/etc/hosts
« kann u. U. vernachlässigt werden. Die »Devilbox« bietet hierzu eine
Auto DNS Funktionalität an.
Ab Devilbox 3 kannst du auch das TLD-Suffix dvl.to
verwenden. Damit werden automatisch alle *.dvl.to
auf
127.0.0.1
geleitet.
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.
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 = -1
Im 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 4.13 in ein Verzeichnis contao4
musst du lediglich eingeben:
composer create-project contao/managed-edition contao4 4.13
Lege dir eine neue Datenbank an:
mysql -u root -h mysql -p -e 'CREATE DATABASE db_contao4;'
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 -v
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 |
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.
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 php74
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 |
Du kannst in jedem Projektverzeichnis prophylaktisch die backend.cfg anlegen und den Inhalt auskommentieren, wenn das Projekt nicht gesondert behandelt werden soll.
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.)
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