Drupal lässt sich recht einfach in einem Docker Container betreiben. Das drupal:latest Image von Dockerhub kommt schon fertig mit apache2 und PHP 8. Lediglich die gewünschte Datenbank muss man noch zur Verfügung stellen. Zur Auswahl stehen hier MySQL oder MariaDB, Postgres und SQLite. Sollte man sich für SQLite entscheiden brauchen wie keinen extra DB Container. In unserem Beispiel nutzen wir MariaDB und das Ganze mit Docker-Compose.
Ich setze jetzt einfach mal voraus ihr habt Docker und Docker-Compose schon installiert. Ansonsten hiflt ein Google Suche nach einer Installations-Anleitung für eure Distro/OS weiter. Da gibts genügend gute von.
Das Ganze ist ein recht einfaches Beispiel, nach dem Drupal unter localhost erreichbar ist. Für den Produktiv Einsatz wäre noch die Konfiguration des Apache mit Domain und SSL Zertifikat nötig.
docker-compose.yml
version: '3.1'
services:
mariadb:
image: mariadb
container_name: mariadb
command: --max-allowed-packet=64MB
restart: always
networks:
- internal
volumes:
- mariadb_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_PASSWORD=drupal
- MYSQL_DATABASE=drupal
- MYSQL_USER=drupal
drupal:
image: drupal:latest
container_name: drupal
depends_on:
- mariadb
restart: always
networks:
- internal
- external
volumes:
- drupal_data:/opt/drupal
ports:
- "80:80"
networks:
external:
driver: bridge
internal:
driver: bridge
volumes:
drupal_data:
mariadb_data:
Erklärung
In unserem Beispiel haben wir 2 Container definiert, einmal den MariaDB und einmal den für Drupal, jeweils in der aktuellsten Version. Die Daten werden persisten gespeichert (volumes). Unter Ubuntu findet ihr diese dann unter /var/lib/docker/volumes /drupal_data für Drupal und /var/lib/docker/volumes /mariadb_data für die Datenbank.
Mit restart: always definieren wir, wie die Container im Falle eines reboot oder ähnlichen gestartet werden sollen, nämlich immer.
Start/Stop
Im Verzeichniss eurer docker-compose.yml
# starten
docker-compose up -d
#stoppen
docker-compose stop
Bei der Einrichtung von Drupal im Browser müsst ihr dann mariadb als DB Host angeben.