Bei dem Aufsetzen dieses WordPress-Blogs, wollte ich direkt mit Hilfe von Docker dafür sorgen, dass ich den Blog relativ leicht auf einen anderen Server (oder auf meinen lokalen PC) migrieren kann und auch in der Lage bin, den Blog auf ein Backup zurückzusetzen; wenn er beispielsweise durch fehlerhafte Plugin-Upgrades plötzlich in einen schwer zu lösenden Fehlerzustand gerät.
Praktischerweise gibt es hierfür bereits ein Dockerimage für WordPress, für welches wir uns ein Dockerfile erzeugen können, um dieses zu nutzen.
FROM wordpress:latest
WORKDIR /var/www/html
Desweiteren nutzen wir eine docker-compose.yml Datei, um 2 Docker-Container zu definieren.
- Datenbank-Container
- nutzt Mariadb als Datenbank
- hat 2 Docker-Volumes
- Docker-Volume: Datenbank-Inhalte
- Docker-Volume: Import-Endpoint um einen initialen Datenbankstand bei erstmaligen Starten des Containers vorzubereiten.
- WordPress-Container
- nutzt unsere Dockerfile als Basis.
- hat 3 Docker-Volumes
- Docker-Volume: WordPress-Plugins
- Docker-Volume: WordPress-Themes
- Docker-Volume: WordPress-Uploads
version: '3.6'
services:
db:
image: mariadb:10.1.41
volumes:
- ./database:/var/lib/mysql
- ./database-init:/docker-entrypoint-initdb.d
restart: always
ports:
- 127.0.0.1:5451:3306
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: mydb
MYSQL_USER: mydbuser
MYSQL_PASSWORD: changeme
wordpress:
build: ./docker
image: wordpress-myproject
depends_on:
- db
ports:
- 127.0.0.1:5450:80
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: mydb
WORDPRESS_DB_USER: mydbuser
WORDPRESS_DB_PASSWORD: changeme
volumes:
- .wordpress/plugins:/var/www/html/wp-content/plugins
- .wordpress/themes:/var/www/html/wp-content/themes
- .wordpress/uploads:/var/www/html/wp-content/uploads
Wenn wir die Docker-Compose File nun deployen starten wir hierdurch die beiden Container. Wir sollten die Logausgaben beim Start beobachten und es kann sein, dass wir den WordPress-Container nochmal manuell neu starten müssen, nachdem der Datenbank-Container vollständig hochgefahren/initialisiert ist, da er davor evtl. noch nicht gefunden wird.
Wenn wir dann den Docker-Container über die korrekte URL im Webbrowser erstmalig aufrufen, erhalten wir die typische Prozedur für das erstmalige Aufsetzen des WordPress-Blogs angezeigt, wenn alles geklappt hat. Wir können nun hier wie üblich alle Einstellungen tätigen und uns danach über die “wp-admin” Route in den Blog erstmalig einloggen.
Das zugehörige Github-Projekt als Vorlage-Template habe ich hier bereitgestellt: