WordPress: DB+Web+PMA¶
Infos zum Wordpress Image siehe: Wordpress Image auf Docker Hub
Official Image WordPress auf dem Docker Hub¶
Für die Bereitstellung von WordPress benötigen wir eine MySQL/MariaDB-Docker-Instanz, Datenbankmanagement und ein passendes Dockernetzwerk.
Hier wieder eine unvollständige Liste mit Tags (zu einem Zeitpunkt):
6.5.3-php8.1-apache, 6.5-php8.1-apache, 6-php8.1-apache, php8.1-apache, 6.5.3-php8.1, 6.5-php8.1, 6-php8.1, php8.1
6.5.3-php8.1-fpm, 6.5-php8.1-fpm, 6-php8.1-fpm, php8.1-fpm
6.5.3-php8.1-fpm-alpine, 6.5-php8.1-fpm-alpine, 6-php8.1-fpm-alpine, php8.1-fpm-alpine
6.5.3-apache, 6.5-apache, 6-apache, apache, 6.5.3, 6.5, 6, latest, 6.5.3-php8.2-apache, 6.5-php8.2-apache, 6-php8.2-apache, php8.2-apache, 6.5.3-php8.2, 6.5-php8.2, 6-php8.2, php8.2
6.5.3-fpm, 6.5-fpm, 6-fpm, fpm, 6.5.3-php8.2-fpm, 6.5-php8.2-fpm, 6-php8.2-fpm, php8.2-fpm
Die Auswahl der verschiedenen Images:
Image: wordress - enthält Webserver inkl. PHP
Tag latest: CMS/Blogging-Software WordPress 6.5.3 + Webserver Apache2 + PHP 8.2
Image: mariadb - der Datenbankserver
Image: phpmyadmin - das Datenbankmanagement / Dashboard
Auf dem Docker Hub Portal zu Wordpress finden sich auch die
Erläuterungen für die speziellen WordPress Umgebungsvariablen
(siehe Parameter -e).
Hier folgen die vollständigen Konfigurationen für die Docker Run Kommandos.
Wir werden lokale Host-Verzeichnisse für die Datenbank und die WordPress Website nutzen.
Man sollte - wie immer - für jedes Projekt einen eigenen Ordner reservieren. Die HomeFolder für DB + WordPress muss man nicht manuell erstellen. Hierbei fallen einem aber vielleicht gleich Komplikationen oder Probleme auf.
mkdir -p /home/joeb/docker-data/wp01-db
mkdir -p /home/joeb/docker-data/wp01-html
Das notwendige Netzwerk müssen wir bei dieser Lösung immer noch manuell erstellen. Das wird später bei Compose wegfallen.
docker network create wp01-net
docker network list
Jetzt kümmern wir ums die Container für die Umsetzung. Wir fangen mit der Datenbank MariaDB an.
Tipp
Bei Tests auf Containeramen mit Parameter --name achten
und z.B. Nummerierungen nutzen. Überflüssige oder nicht nutzbare
Container entfernen.
DB-Container mit MariaDB bereitstellen:
docker run -d --name mariadb-wp01 \
--network wp01-net \
--env MARIADB_USER=wpuser \
--env MARIADB_PASSWORD=usergeheim \
--env MARIADB_ROOT_PASSWORD=rootgeheim \
--env MARIADB_DATABASE=wpexample01 \
-v /home/joeb/docker-data/wp01-db/:/var/lib/mysql \
mariadb
Jetzt der WordPress-Container (inkl. Webserver und PHP-Technik)
docker run -d --name wp01 \
--network wp01-net \
-e WORDPRESS_DB_PASSWORD=usergeheim \
-e WORDPRESS_DB_HOST=mariadb-wp01 \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_NAME=wpexample01 \
-v /home/joeb/docker-data/wp01-html:/var/www/html \
-p 8081:80 \
wordpress
Und als drittes kümmern wir uns um den phpMyAdmin Container:
docker run -d --name pma-wp01 \
--network wp01-net \
-e PMA_HOST=mariadb-wp01 \
-p 8080:80 \
phpmyadmin
Die gesamte Umsetzung sollte sauber textlich erfasst und im Betrieb wieder auf Herz und Nieren analysiert (inspect) werden.
Hinweis
Und auch auf die Gefahr hin mich zu wiederholen ;-) : Bitte immer auf die Ports achten! Das Netz ist voll mit Foreneinträgen von Containeranwendern, die kleinlaut einräumen mussten, das die Code eigentlich alle richtig waren, aber das lief dann doch noch irgendwie ein Webserver und lauschte auf Port 80.
Die Container wurden manuell gestartet - also müssen sie auch manuell wieder gestopt werden.
docker container stop mariadb-wp01
docker container stop wp01
docker container stop pma-wp01
Das Starten verlangt nach gleichem Muster und benötigt keinerlei
Übergabe von Konfigurationen - die wurden ja in den docker run ...
Kommandos für die Container etabliert!
# Alles wieder einschalten
docker container start mariadb-wp01
docker container start wp01
docker container start pma-wp01
Und natürlich werden wir uns im nächsten Schritt alle diese Arbeiten inklusive der Netzwerk- und Volumen-Verwaltungen weiter automatisieren und vereinfachen: wir verwenden Docker Compose.