Inhaltsverzeichnis

5 Min. Lesezeit

WordPress mit Docker einrichten: Docker-Compose-Anleitung für 2026

WordPress mit Docker Compose einrichten: aktueller docker compose-Befehl, WP-CLI-Beispiele und die Abwägung Eigenbetrieb gegenüber einem verwalteten CMS.

Dr. Matthias Klinger

Von den Expert:innen

Dr. Matthias KlingerDr. Matthias KlingerDr. Matthias KlingerGeschäftsführerDr. Matthias Klinger ist Gründer von Quandes und verbindet GenAI-Expertise mit unternehmerischem Coaching. Sein Fokus: digitale Lösungen, die aus Ideen echten gesellschaftlichen Impact machen.

5 Min. Lesezeit

WordPress mit Docker einrichten: Docker-Compose-Anleitung für 2026

Wer WordPress zum Testen, für eine Redaktionsumgebung oder als dauerhaften Betrieb aufsetzt, verliert die erste Stunde selten an Inhalten. Meist geht sie für PHP-Versionskonflikte, abweichende Datenbank-Stände und vergessene Server-Einstellungen verloren. Jede Installation weicht leicht von der letzten ab, und genau diese Abweichung macht Fehler schwer reproduzierbar.

Docker Compose löst dieses Problem, indem es WordPress, Datenbank und Hilfswerkzeuge in einer einzigen Datei bündelt und mit einem Befehl startet. Seit 2023 hat sich dabei die Syntax verändert, ein Detail, das viele ältere Anleitungen noch nicht abbilden. Dieser Beitrag zeigt die aktuelle Einrichtung Schritt für Schritt, inklusive WP-CLI, Migration einer bestehenden Seite und der Frage, wann sich der Eigenbetrieb im Unternehmen überhaupt lohnt.

Das Wichtigste in Kürze

  • Befehl geändert: Seit Mitte 2023 heißt der Compose-Befehl docker compose (ohne Bindestrich) statt docker-compose [1].
  • Aktuelle Datenbank-Basis: WordPress.org empfiehlt Stand 2026 MySQL ab Version 8.0 oder MariaDB ab Version 10.6 [2].
  • WP-CLI bleibt Standard: Plugin- und Theme-Installation per Kommandozeile läuft weiterhin über WP-CLI, offiziell als eigenes Docker-Image verfügbar [3][4].
  • Migration per Plugin funktioniert weiterhin: All-in-One WP Migration wird 2026 aktiv weiterentwickelt und zählt über 5 Millionen aktive Installationen [5].
  • Eigenbetrieb ist eine Dauerentscheidung: Wer selbst hostet, übernimmt Updates, Backups und Sicherheits-Patches dauerhaft. Ein verwaltetes CMS verschiebt diese Aufgaben an den Anbieter.

Docker Compose als technische Basis für WordPress

Docker Compose bündelt WordPress, Datenbank und optionale Hilfswerkzeuge wie phpMyAdmin in einer YAML-Datei und startet alle Container mit einem einzigen Befehl. Statt PHP, Webserver, Datenbank und WordPress-Dateien einzeln auf dem Host einzurichten, definiert eine docker-compose.yml jeden Baustein als eigenen Container, der sich unabhängig von der Host-Umgebung reproduzierbar starten lässt.

Seit Mitte 2023 hat sich dabei ein Detail verändert, das ältere Anleitungen noch nicht abbilden: Der Support für Compose V1 mit dem eigenständigen Befehl docker-compose endete nach Angaben von Docker im Juni 2023 [1]. Seither ist docker compose, ohne Bindestrich und als fester Bestandteil der Docker-CLI, die aktuelle Syntax. GitHub hat den alten Befehl zusätzlich zum 9. Juli 2024 vollständig aus seinen gehosteten Runner-Images entfernt [6]. Alle Befehle in diesem Beitrag nutzen deshalb docker compose; wer noch Skripte mit docker-compose betreibt, sollte sie vor der nächsten Server-Migration anpassen.

Migrationshinweis: V1 zu V2

`docker-compose` (mit Bindestrich, Version 1) ist seit Juni 2023 ohne Support und seit Juli 2024 aus GitHubs eigenen Runner-Images entfernt. Bestehende Skripte vor dem nächsten Server-Wechsel auf `docker compose` (ohne Bindestrich, Docker-CLI-Subcommand) umstellen.

WordPress mit Docker Compose einrichten

WordPress, Datenbank und phpMyAdmin laufen als eigene Container, verbunden über eine einzige Compose-Datei.

Systemvoraussetzungen

Für die Einrichtung reichen ein aktueller Docker Engine mit Compose V2, seit 2023 standardmäßig in Docker Desktop und den offiziellen Linux-Paketen enthalten, sowie git zum Anlegen der Projektstruktur. WordPress läuft komplett im Container. PHP, Webserver und Datenbank müssen auf dem Host nicht separat installiert werden.

Unter Linux gehört der eigene Benutzer typischerweise in die Docker-Gruppe, damit docker- und docker compose-Befehle ohne sudo funktionieren:

1sudo groupadd docker
2sudo usermod -aG docker $USER

Nach diesem Befehl ist ein Abmelden und erneutes Anmelden nötig, damit die Gruppenmitgliedschaft aktiv wird.

Drei Container, eine Datei

Die `docker-compose.yml` in diesem Beitrag definiert drei Dienste: WordPress (Anwendung), MariaDB (Datenbank) und phpMyAdmin (Datenbank-Verwaltung im Browser). Ein einziger Befehl startet alle drei zusammen.

Compose-Datei und Umgebungsvariablen

Im Projektordner definiert eine docker-compose.yml drei Dienste: WordPress selbst, eine Datenbank und phpMyAdmin für die Datenbank-Verwaltung im Browser. Das offizielle WordPress-Image auf Docker Hub dokumentiert dieses Muster mit mysql:8.0 als Datenbank [3]; MariaDB ab Version 10.6 ist laut WordPress.org ebenso eine aktuell unterstützte Alternative [2] und wird hier verwendet, weil auch das offizielle phpMyAdmin-Image sie in seinem Beispiel führt [7]:

1services:
2 wordpress:
3 image: wordpress:latest
4 restart: always
5 ports:
6 - "8081:80"
7 environment:
8 WORDPRESS_DB_HOST: db
9 WORDPRESS_DB_USER: wordpress
10 WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
11 WORDPRESS_DB_NAME: wordpress
12 volumes:
13 - ./data/wp-app:/var/www/html
14 depends_on:
15 - db
16
17 db:
18 image: mariadb:10.11
19 restart: always
20 environment:
21 MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
22 MARIADB_DATABASE: wordpress
23 MARIADB_USER: wordpress
24 MARIADB_PASSWORD: ${DB_PASSWORD}
25 volumes:
26 - ./data/mysql:/var/lib/mysql
27
28 phpmyadmin:
29 image: phpmyadmin
30 restart: always
31 ports:
32 - "8080:80"
33 environment:
34 PMA_HOST: db
35 depends_on:
36 - db

Eine .env-Datei im selben Ordner hält die Zugangsdaten außerhalb der Compose-Datei:

1DB_ROOT_PASSWORD=ein-sicheres-passwort
2DB_PASSWORD=ein-zweites-sicheres-passwort

Beide Platzhalter vor dem ersten Start durch eigene, ausreichend lange Passwörter ersetzen.

Hot-Fact-Hinweis: Passwörter gehören in die .env

Zugangsdaten stehen ausschließlich in der `.env`-Datei, nie direkt in der `docker-compose.yml`. So bleiben Passwörter außerhalb der Versionskontrolle, wenn `.env` in `.gitignore` eingetragen ist.

Container starten, prüfen und stoppen

1docker compose up -d

Der Parameter -d startet alle drei Container im Hintergrund. Der Ordner data legt dabei die Unterordner wp-app (WordPress-Dateien) und mysql (Datenbankdaten) an, sodass Inhalte einen Neustart überstehen.

Status prüfen:

1docker compose ps

WordPress ist danach unter http://localhost:8081 erreichbar, phpMyAdmin unter http://localhost:8080. Zum Anhalten und vollständigen Entfernen:

1docker compose stop
2docker compose down
Container-Lebenszyklus im Überblick

`docker compose up -d` startet, `docker compose ps` prüft den Status, `docker compose stop` hält an, `docker compose down` entfernt die Container vollständig. Die Daten in `./data` bleiben dabei über einen Neustart hinweg erhalten.

Erst-Einrichtung von WordPress

Einrichtung über den Browser

http://localhost:8081 aufrufen und den Installations-Wizard Schritt für Schritt durchlaufen. Nachteil dieses Wegs: Jeder Schritt, einschließlich Plugin-Auswahl und Konfiguration, läuft manuell ab, was bei mehreren Installationen Zeit kostet.

Einrichtung per WP-CLI

WP-CLI bleibt das offizielle Kommandozeilen-Werkzeug für WordPress und läuft in einem eigenen Container-Image [4]. Dazu kommt ein weiterer Dienst in die docker-compose.yml:

1 wpcli:
2 image: wordpress:cli
3 volumes:
4 - ./data/wp-app:/var/www/html
5 environment:
6 WORDPRESS_DB_HOST: db
7 WORDPRESS_DB_USER: wordpress
8 WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
9 WORDPRESS_DB_NAME: wordpress
10 depends_on:
11 - db

WordPress-Installation per Kommandozeile:

1docker compose run --rm wpcli wp core install --url=http://localhost:8081 --title="Beispielseite" --admin_user=admin --admin_email=admin@example.com

Plugin installieren und aktivieren, hier am Beispiel des von WordPress selbst gepflegten Demo-Plugins:

1docker compose run --rm wpcli wp plugin install hello-dolly --activate

Theme installieren, hier am Beispiel des aktuellen WordPress-Standardthemes:

1docker compose run --rm wpcli wp theme install twentytwentyfour --activate

Beide Befehle folgen laut WP-CLI-Referenz derselben Struktur [4]:

WP-CLI-Befehlsmuster zum Wiederverwenden

`docker compose run --rm wpcli wp {typ} install {slug} --activate` Nur `{typ}` (`plugin` oder `theme`) und `{slug}` ändern sich — die Struktur bleibt für jedes Plugin oder Theme aus dem WordPress-Verzeichnis gleich.

Migration einer bestehenden Installation

Wer eine bestehende WordPress-Seite in die neue Docker-Umgebung übernehmen will, kommt ohne Handarbeit an Datenbank-Dumps aus, wenn ein Migrations-Plugin Export und Import übernimmt. All-in-One WP Migration bleibt dafür 2026 eine aktiv gepflegte Wahl: Das Plugin zählt über 5 Millionen aktive Installationen und wurde zuletzt vor rund zwei Wochen aktualisiert [5]. Es exportiert Datenbank und Mediathek in eine einzige Datei, die sich im Zielsystem über die Plugin-Oberfläche wieder einspielen lässt.

Docker-Setup einordnen

Passt Docker-Eigenbetrieb zu Ihrer Situation?

Im Erstgespräch ordnen wir ein, ob der Docker-Compose-Weg aus diesem Beitrag zu Ihrem Team und Ihrer Betriebskapazität passt, oder ob ein verwalteter Ansatz Zeit an anderer Stelle freisetzt.

Erstgespräch anfragen

Docker-Eigenbetrieb vs. verwaltetes CMS

Wer die vorherigen Schritte durchgeführt hat, betreibt WordPress ab jetzt selbst. Der Docker-Compose-Stack läuft auf einem eigenen oder gemieteten Server, und die Verantwortung für Betrieb und Sicherheit bleibt vollständig im eigenen Haus. Das ist der Preis für die Kontrolle, die Docker gegenüber einem fertigen Hosting-Paket verschafft.

Drei Aufgaben bleiben dabei dauerhaft bestehen:

  • WordPress-Core, Theme und Plugins aktuell halten: Ohne regelmäßige Updates öffnen bekannte Sicherheitslücken das System für Angriffe.
  • Backups einrichten und testen: Datenbank und Mediathek brauchen eine Sicherung, die sich im Ernstfall verlässlich wiederherstellen lässt.
  • Docker-Images selbst aktualisieren: Jede neue Version von wordpress, mariadb oder phpmyadmin kann Änderungen mitbringen, die vor dem Produktiv-Update geprüft werden müssen.

Wer diesen Wartungsaufwand nicht selbst tragen will, hat grundsätzlich zwei Wege: ein verwaltetes WordPress-Hosting, das einen Teil der Aufgaben übernimmt, oder ein verwaltetes CMS wie Quandes Canvas, bei dem Updates, Sicherheits-Patches und Infrastruktur beim Anbieter liegen und nicht mehr im eigenen Docker-Compose-Stack landen. Ein ausführlicher Vergleich zu Alternativen zu WordPress ist in Vorbereitung.

Daumenregel für die Entscheidung

Docker-Eigenbetrieb passt, wenn Kontrolle und laufende Kosten wichtiger sind als Zeitersparnis. Ein verwalteter Ansatz passt, wenn die Zeit für Server- und Plugin-Pflege im Unternehmen fehlt.

Wer sich grundsätzlicher fragt, ob Eigenbau oder Beauftragung passt, findet die Entscheidungsgrundlagen im Beitrag Website erstellen lassen für KMU. Wer eine bestehende WordPress-Seite ablösen will, findet die Faktoren dafür im Beitrag Website-Relaunch ohne Sichtbarkeitsverlust, und wer WordPress ganz umgehen möchte, im Beitrag Website mit KI erstellen für KMU.

Docker-Eigenbetrieb oder verwaltetes CMS

Welcher Ansatz passt zu Ihrem Unternehmen?

Wir ordnen mit Ihnen ein, wie viel laufende Wartung ein Docker-Eigenbetrieb realistisch bedeutet und ob ein verwaltetes CMS wie Canvas die tragfähigere Grundlage ist.

Strategiegespräch vereinbaren

Häufige Fragen zu WordPress mit Docker

Brauche ich noch docker-compose oder docker compose?

Nutzen Sie `docker compose` ohne Bindestrich. Der Support für die alte, eigenständige Version 1 endete nach Angaben von Docker bereits im Juni 2023 [1], und GitHub hat den alten Befehl zum 9. Juli 2024 vollständig aus seinen Runner-Images entfernt [6].

Welche Datenbank passt 2026 zu WordPress in Docker?

MySQL ab Version 8.0 oder MariaDB ab Version 10.6 erfüllen die aktuellen Empfehlungen von WordPress.org [2]. Beide Datenbank-Images stehen offiziell auf Docker Hub bereit.

Wie installiere ich Plugins ohne den Browser-Wizard?

Über WP-CLI im `wordpress:cli`-Container, zum Beispiel mit `docker compose run --rm wpcli wp plugin install <plugin-slug> --activate` [3][4].

Kann ich eine bestehende WordPress-Seite in die Docker-Umgebung übernehmen?

Ja, über ein Migrations-Plugin wie All-in-One WP Migration, das Datenbank und Mediathek in eine einzige Export-Datei packt [5].

Lohnt sich der Docker-Eigenbetrieb für ein Unternehmen?

Das hängt von der verfügbaren Betriebskapazität ab. Wer Updates, Backups und Sicherheits-Patches selbst tragen kann und will, gewinnt Kontrolle. Wer diese Zeit nicht hat, ist mit einem verwalteten CMS oft besser bedient.

Weiterführend

Quellen

  1. [1]Docker: New Docker Compose V2 and V1 deprecation https://www.docker.com/blog/new-docker-compose-v2-and-v1-deprecation/
  2. [2]WordPress.org: Requirements https://wordpress.org/about/requirements/
  3. [3]Docker Hub: wordpress, Official Image https://hub.docker.com/_/wordpress
  4. [4]WordPress Developer Resources: WP-CLI Commands https://developer.wordpress.org/cli/commands/
  5. [5]WordPress.org Plugin-Verzeichnis: All-in-One WP Migration and Backup https://wordpress.org/plugins/all-in-one-wp-migration/
  6. [6]GitHub Changelog: GitHub-hosted runner images deprecation notice, Docker Compose v1 https://github.blog/changelog/2024-04-10-github-hosted-runner-images-deprecation-notice-docker-compose-v1/
  7. [7]Docker Hub: phpmyadmin, Official Image https://hub.docker.com/_/phpmyadmin

Über die Autor:innen

Dr. Matthias Klinger

Dr. Matthias Klinger

WordPress mit Docker einrichten: Docker-Compose-Anleitung für 2026 | Quandes