WordPress Installation · 13 min read · Sep 10, 2025
So installieren Sie WordPress mit Docker Compose

WordPress CMS (Content Management System) ist eine weit verbreitete Open-Source-Plattform, die es Benutzern ermöglicht, digitale Inhalte zu erstellen, zu verwalten und zu veröffentlichen, hauptsächlich für Websites und Blogs. Ursprünglich 2003 veröffentlicht, hat sich WordPress zu dem weltweit beliebtesten CMS entwickelt, das über 40 % aller Websites im Internet antreibt. Es bietet eine benutzerfreundliche Oberfläche, die es Personen mit wenig oder keiner Programmiererfahrung ermöglicht, professionelle Websites zu erstellen und zu pflegen. WordPress ist hochgradig anpassbar, mit Tausenden von Themen und Plugins, die verfügbar sind, um seine Funktionalität zu erweitern und eine breite Palette von Bedürfnissen von einfachen Blogs bis hin zu komplexen E-Commerce-Seiten zu bedienen. Die starke Unterstützung der Community, regelmäßige Updates und umfangreiche Dokumentation machen es zu einer zuverlässigen und vielseitigen Wahl für sowohl Anfänger als auch erfahrene Entwickler.
Docker ist eine Open-Source-Plattform, die entwickelt wurde, um die Bereitstellung, Skalierung und Verwaltung von Anwendungen innerhalb leichter, tragbarer Container zu automatisieren. 2013 eingeführt, revolutionierte Docker die Softwareentwicklung, indem es eine konsistente Umgebung für Anwendungen bereitstellt, unabhängig davon, wo sie bereitgestellt werden, sei es auf der lokalen Maschine eines Entwicklers, in lokalen Rechenzentren oder in der Cloud. Container bündeln eine Anwendung mit all ihren Abhängigkeiten, Bibliotheken und Konfigurationsdateien, um eine konsistente Leistung in verschiedenen Umgebungen sicherzustellen. Diese Containerisierung vereinfacht den Entwicklungsworkflow, verbessert die Zusammenarbeit und erhöht die Effizienz, indem sie Entwicklern ermöglicht, Anwendungen nahtlos zu erstellen, zu teilen und auszuführen. Das Docker-Ökosystem umfasst Tools und Dienste für die Container-Orchestrierung, wie Docker Swarm und Kubernetes, die die Verwaltung von großflächigen Container-Bereitstellungen erleichtern und es zu einer Grundlagentechnologie in modernen DevOps-Praktiken machen.
Dieses Tutorial zeigt Ihnen, wie Sie WordPress mit Docker/Docker Compose installieren. Mit Docker wird der Prozess der Installation des bevorzugten Stacks erheblich erleichtert. Sie können dieselbe Konfiguration verwenden, um WordPress schnell auf mehreren Servern zu installieren. Wir werden auch das phpMyAdmin-Tool zur Verwaltung von Datenbanken zusammen mit dem Nginx-Proxy-Server installieren, um die Website über SSL bereitzustellen.
Voraussetzungen
- Ein Linux-Server mit einem Nicht-Root-Benutzer, der über sudo-Rechte verfügt. Wir verwenden einen Server, der Ubuntu 24.04 für unser Tutorial ausführt.
- Ein vollständig qualifizierter Domainname (FQDN), der auf Ihren Server zeigt. Für unsere Zwecke verwenden wir
example.comals Domainnamen für die WordPress-Website undphpmyadmin.example.comfür die phpMyAdmin-Website. - Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo apt update - Installieren Sie grundlegende Dienstprogramme. Einige davon sind möglicherweise bereits installiert.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Schritt 1 - Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.
Überprüfen Sie, ob die Firewall läuft.
$ sudo ufw status
Sie sollten die folgende Ausgabe erhalten.
Status: inactive
Erlauben Sie den SSH-Port, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.
$ sudo ufw allow OpenSSH
Erlauben Sie auch die HTTP- und HTTPS-Ports.
$ sudo ufw allow http
$ sudo ufw allow https
Aktivieren Sie die Firewall
$ sudo ufw enable
Befehl kann bestehende SSH-Verbindungen stören. Mit der Operation fortfahren (y|n)? y
Firewall ist aktiv und beim Systemstart aktiviert
Überprüfen Sie den Status der Firewall erneut.
$ sudo ufw status
Sie sollten eine ähnliche Ausgabe sehen.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Schritt 2 - Docker und Docker Compose installieren
Ubuntu 22.04 wird mit einer älteren Version von Docker ausgeliefert. Um die neueste Version zu installieren, importieren Sie zuerst den Docker GPG-Schlüssel.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Erstellen Sie eine Docker-Repository-Datei.
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Aktualisieren Sie die System-Repository-Liste.
$ sudo apt update
Installieren Sie die neueste Version von Docker.
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Überprüfen Sie, ob es läuft.
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-07-19 17:11:19 UTC; 3s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 1163 (dockerd)
Tasks: 7
Memory: 21.9M
CPU: 221ms
CGroup: /system.slice/docker.service
??2803 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Standardmäßig benötigt Docker Root-Rechte. Wenn Sie vermeiden möchten, bei jedem Ausführen des docker-Befehls sudo zu verwenden, fügen Sie Ihren Benutzernamen zur docker-Gruppe hinzu.
$ sudo usermod -aG docker $(whoami)
Sie müssen sich vom Server abmelden und wieder als derselbe Benutzer anmelden, um diese Änderung zu aktivieren, oder den folgenden Befehl verwenden.
$ su - ${USER}
Bestätigen Sie, dass Ihr Benutzer zur Docker-Gruppe hinzugefügt wurde.
$ groups
navjot wheel docker
Schritt 3 - Docker Compose-Datei für WordPress erstellen
Ich werde die gesamte Docker-WordPress-Installation in /opt durchführen. Sie können einen anderen Speicherort wie /var oder /home wählen, um Ihren Bedürfnissen gerecht zu werden.
cd /optErstellen Sie ein Verzeichnis für die WordPress-Konfiguration.
$ mkdir wordpressWechseln Sie in das Verzeichnis.
$ cd wordpressErstellen und öffnen Sie die Docker-Compose-Datei zur Bearbeitung.
$ nano docker-compose.ymlFügen Sie den folgenden Code ein.
services:
wp:
image: wordpress:latest
container_name: wordpress-app
restart: unless-stopped
expose:
- 8080
volumes:
- ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
- ./wp-app:/var/www/html
#- ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name # Plugin-Entwicklung
#- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # Theme-Entwicklung
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "${DB_NAME}"
WORDPRESS_DB_USER: "${DB_USER_NAME}"
WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
VIRTUAL_HOST: example.com
LETSENCRYPT_HOST: example.com
depends_on:
- db
links:
- db
wpcli:
image: wordpress:cli
container_name: wpcli_app
volumes:
- ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
- ./wp-app:/var/www/html
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "${DB_NAME}"
WORDPRESS_DB_USER: "${DB_USER_NAME}"
WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
depends_on:
- db
- wp
pma:
image: phpmyadmin/phpmyadmin
container_name: pma
restart: unless-stopped
environment:
# https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables
PMA_HOST: db
PMA_PORT: 3306
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
UPLOAD_LIMIT: 50M
VIRTUAL_HOST: phpmyadmin.example.com
LETSENCRYPT_HOST: phpmyadmin.example.com
expose:
- 8081
links:
- db:db
db:
image: mysql:latest
container_name: wordpressdb
restart: unless-stopped
command: [
'--default_authentication_plugin=mysql_native_password',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]
volumes:
- ./wp-data:/docker-entrypoint-initdb.d
- db_data:/var/lib/mysql
environment:
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_USER: "${DB_USER_NAME}"
MYSQL_PASSWORD: "${DB_USER_PASSWORD}"
volumes:
db_data:
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Es gibt zwei WordPress-Images, die wir abrufen. Eines ist für die Website und eines für das WP-CLI-Tool. Beide Images hängen vom MySQL 8.0-Docker-Image ab. Hier setzen wir die Umgebungsvariablen für die Datenbank-Anmeldeinformationen. Wir haben zwei Volumes für beide Container erstellt, von denen eines auf die öffentlichen Dateien der WordPress-Website zeigt und das zweite auf den benutzerdefinierten PHP.ini-Speicherort zeigt. Wir haben auch die Umgebungsvariablen für die Nginx-virtuelle Host-Domain und die Let’s Encrypt-SSL-Domain für die WordPress-Website definiert.
Sie können weitere Umgebungsvariablen hinzufügen und benutzerdefinierte wp-config.php-Daten in die Docker-Datei einfügen. Sie können mehr über die zusätzlichen Umgebungsvariablen auf der WordPress DockerHub-Seite erfahren.
Das nächste Image ist für phpMyAdmin, das vom selben MySQL-Image abhängt und sich mit dem Root-Passwort verbindet. Es hat ein Upload-Limit von 50 MB. Sie können es entsprechend Ihren Anforderungen und der Größe Ihrer Datenbank ändern. Wie bei der WordPress-Website haben wir die Nginx-virtuelle Host-Domain und den Let’s Encrypt-SSL-Domainnamen für die phpMyAdmin-Website definiert.
Das letzte Image ist für die MySQL-Datenbank. Wir haben einige Befehle an es übergeben, um die Standardauthentifizierungsmethode und den Zeichensatz festzulegen. Wir haben auch ein paar Volumes zum Speichern der Daten erstellt und Umgebungsvariablen für die Datenbank-Anmeldeinformationen eingerichtet.
Der nächste Schritt besteht darin, die Umgebungsdatei für die in der Compose-Datei verwendeten Variablen zu erstellen. Erstellen und öffnen Sie die Umgebungsdatei zur Bearbeitung.
$ sudo nano .env
Fügen Sie den folgenden Code ein.
DB_NAME=wordpress
DB_USER_NAME=username
DB_USER_PASSWORD=userpassword
DB_ROOT_PASSWORD=password
Sie können die Datei speichern, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden. Ersetzen Sie die Variablen durch den Benutzernamen und das Passwort Ihrer Wahl.
Sie können die PHP-Konfiguration mit einer benutzerdefinierten php.ini-Datei anpassen.
Erstellen Sie einen Ordner für die PHP-Konfiguration.
$ mkdir config
Erstellen und öffnen Sie die php.conf.ini-Datei zur Bearbeitung.
$ nano config/php.conf.ini
Fügen Sie den folgenden Code ein. Passen Sie die Werte nach Ihren Anforderungen an. Das Upload-Limit für den PhpMyadmin-Container ist unabhängig von den Werten, die Sie in dieser Datei verwenden.
file_uploads = On
memory_limit = 500M
upload_max_filesize = 30M
post_max_size = 30M
max_execution_time = 600
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Schritt 4 - Docker Compose für Nginx aktualisieren
Erstellen Sie das Verzeichnis für die Nginx-Konfiguration.
$ mkdir nginx
Erstellen Sie ein Verzeichnis für virtuelle Hosts innerhalb dieses Verzeichnisses.
$ mkdir nginx/vhost
Erstellen und öffnen Sie die nginx/vhost/wordpress.example.com zur Bearbeitung.
$ nano nginx/vhost/wordpress.example.com
Fügen Sie den folgenden Code ein.
server_tokens off;
client_max_body_size 30m;
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Machen Sie dasselbe für die Datei nginx/vhost/phpmyadmin.example.com.
$ nano nginx/vhost/phpmyadmin.example.com
Fügen Sie den folgenden Code ein.
server_tokens off;
client_max_body_size 50m;
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Öffnen Sie die Docker-Compose-Datei erneut.
$ nano docker-compose.yml
Fügen Sie den folgenden Code vor der Zeile volumes: db_data: ein.
nginx:
container_name: nginx
image: nginxproxy/nginx-proxy
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/html:/usr/share/nginx/html
- ./nginx/certs:/etc/nginx/certs
- ./nginx/vhost:/etc/nginx/vhost.d
logging:
options:
max-size: "10m"
max-file: "3"
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
In dem obigen Code ziehen wir das Nginx-Proxy-Docker-Image und exponieren die Ports 80 und 443 zum Host-Container, die verwendet werden, um mit der Außenwelt zu verbinden. Wir haben auch Volumes für die Nginx-HTML-Seite, ein Verzeichnis, in dem alle SSL-Zertifikate gespeichert werden, und das Verzeichnis für virtuelle Hosts erstellt, das wir oben verwendet haben, um zusätzliche Nginx-Konfiguration hinzuzufügen. Wir haben die Dateigröße für den Upload für die WordPress- und phpMyAdmin-Websites konfiguriert. Der Domainname der Website wird aus den Umgebungsvariablen abgerufen, die wir im vorherigen Schritt definiert haben.
Schritt 5 - Docker Compose für SSL aktualisieren
Öffnen Sie die Docker-Compose-Datei zur Bearbeitung.
$ nano docker-compose.yml
Fügen Sie den folgenden Code vor der Zeile volumes: db_data: ein.
acme-companion:
container_name: acme-companion
image: nginxproxy/acme-companion
restart: unless-stopped
volumes_from:
- nginx
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./nginx/acme:/etc/acme.sh
environment:
DEFAULT_EMAIL: [email protected]
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Hier ziehen wir das Acme-Companion-Docker-Image, das mit dem Nginx-Proxy funktioniert. Es zieht die Volumes vom Nginx-Container. Wir definieren auch ein Volume für das acme.sh-Tool, das alle Konfigurationen bezüglich Let’s Encrypt SSL speichert. Schließlich definieren wir eine Umgebungsvariable, um das SSL-Zertifikat bei Let’s Encrypt zu registrieren.
Schritt 6 - Starten und Installieren von WordPress
Jetzt, da alle unsere Konfigurationsdateien vollständig sind, ist es Zeit, die Container zu starten und zu starten.
$ docker compose up -d
Warten Sie ein paar Minuten und überprüfen Sie den Status der Container.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1e8a9b5169d nginxproxy/acme-companion "/bin/bash /app/entr…" 14 seconds ago Up 7 seconds acme-companion
8a37c78ff790 wordpress:latest "docker-entrypoint.s…" 14 seconds ago Up 7 seconds 80/tcp, 8080/tcp wordpress-app
4f9c777c97c2 phpmyadmin/phpmyadmin "/docker-entrypoint.…" 14 seconds ago Up 7 seconds 80/tcp, 8081/tcp pma
1b1dede46b07 nginxproxy/nginx-proxy "/app/docker-entrypo…" 14 seconds ago Up 11 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
b9cf64a2f4a3 mysql:latest "docker-entrypoint.s…" 14 seconds ago Up 11 seconds 3306/tcp, 33060/tcp wordpressdb
Öffnen Sie die URL https://example.com, um den WordPress-Installer zu starten.

Wählen Sie Ihre Sprache aus und klicken Sie auf die Schaltfläche Weiter, um zur nächsten Seite zu gelangen.

Füllen Sie die Site-Details aus, wählen Sie Ihren Benutzernamen, Ihr Passwort und Ihre E-Mail-Adresse aus und klicken Sie auf die Schaltfläche WordPress installieren, um die Installation zu starten.

Sie werden zur Seite mit dem Installationserfolg weitergeleitet. Klicken Sie auf die Schaltfläche Anmelden, um zur Anmeldeseite zu gelangen.

Geben Sie Ihre Anmeldedaten ein und klicken Sie auf die Schaltfläche Anmelden, um das WordPress-Dashboard zu öffnen.

Sie können WordPress jetzt verwenden.
Schritt 7 - Zugriff auf PhpMyAdmin
Sie können auf phpMyAdmin über die URL https://phpmyadmin.example.com zugreifen.

Geben Sie root als Benutzernamen und das Root-Passwort ein und klicken Sie auf Anmelden, um das Dashboard zu öffnen.

Sie können phpMyAdmin jetzt verwenden.
Schritt 8 - Zugriff auf WP-CLI
Sie können auf die WP-CLI mit dem folgenden Befehl zugreifen.
$ docker compose run --rm wpcli cli version
Sie erhalten die folgende Ausgabe.
[+] Running 2/0
? Container wordpressdb Running 0.0s
? Container wordpress-app Running 0.0s
WP-CLI 2.7.1
Um zu vermeiden, bei jedem Mal einen so langen Befehl einzugeben, können wir die Alias-Funktion von Linux verwenden.
$ alias wp="docker compose -f ~/wordpress/docker-compose.yml run --rm wpcli"
Sie können jetzt den folgenden Befehl von überall in Ihrem Container eingeben.
$ wp cli version
Aliases in Linux sind temporär. Um den Alias dauerhaft zu machen, müssen Sie die Datei ~/.bashrc bearbeiten. Öffnen Sie sie zur Bearbeitung.
$ nano ~/.bashrc
Fügen Sie die folgende Zeile am Ende der Datei ein.
# Benutzerdefinierte Aliase
alias wp="docker compose -f ~/wordpress/docker-compose.yml run --rm wpcli"
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Laden Sie die Datei, um die Konfiguration neu zu laden.
$ source ~/.bashrc
Sie können jetzt die WP-CLI verwenden.
Schritt 9 - WordPress sichern
Es gibt mehrere Möglichkeiten, WordPress zu sichern. Der einfachste Weg ist die Verwendung eines Plugins. Es gibt mehrere Plugins dafür. Sie können auch phpMyAdmin verwenden, um ein Backup zu erstellen.
Sie können auch die Befehlszeile verwenden, um die WordPress-Datenbank zu sichern. Wechseln Sie in das WordPress-Verzeichnis.
$ cd ~/wordpress
Verwenden Sie den folgenden Befehl, um die WordPress-Datenbank zu sichern. Sie werden nach Ihrem MySQL-Root-Passwort gefragt.
$ docker compose exec db sh -c "exec mysqldump wordpress -uroot -p" | sudo tee wp-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null
Enter password: password
Der obige Befehl erstellt das SQL-Backup im Verzeichnis ~/wordpress/wp-data.
Überprüfen Sie den Inhalt des Verzeichnisses.
$ ls -al wp-data
total 908
drwxr-xr-x 2 root root 4096 Jan 11 10:15 ./
drwxrwxr-x 6 navjot navjot 4096 Jan 11 10:05 ../
-rw-r--r-- 1 root root 919814 Jan 11 10:14 data_11-01-2023_10_14_40.sql
Sie können die Datenbank im Verzeichnis gesichert sehen. Sie können diese Datenbank mit dem phpMyAdmin-Tool oder mit dem folgenden Befehl wiederherstellen.
$ docker compose exec db sh -c "exec mysql -uroot -p" < wp-data/data_11-01-2023_10_14_40.sql
Sie können einen Cron-Job erstellen, um die Datenbank regelmäßig zu sichern.
Erstellen Sie das Backup-Skript im Verzeichnis /etc/cron.daily und öffnen Sie es zur Bearbeitung.
$ sudo nano /etc/cron.daily/wpbackup.sh
Fügen Sie den folgenden Code ein.
#!/bin/bash
docker compose exec db sh -c "exec mysqldump wordpress -uroot -p" | tee wp-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Machen Sie das Skript ausführbar.
$ sudo chmod +x /etc/cron.daily/wpbackup.sh
Jetzt wird Ihre Datenbank täglich gesichert.
Schritt 10 - WordPress aktualisieren
Der einfachste Weg, WordPress zu aktualisieren, ist die Verwendung des integrierten Updaters. Sie können es auch mit Docker aktualisieren. Der erste Schritt besteht darin, die WordPress-Datenbank mit dem Befehl aus Schritt 9 zu sichern.
Wechseln Sie dann in das Verzeichnis.
$ cd ~/wordpress
Stoppen Sie die Container.
$ docker compose down --remove-orphans
Ziehen Sie die neuesten Container-Images.
$ docker compose pull
Nehmen Sie Änderungen in der docker-compose.yml vor, wenn Sie möchten.
Starten Sie die WordPress-Container neu.
$ docker compose up -d
Fazit
Dies beendet unser Tutorial zur Installation von WordPress mit Docker Compose, phpMyAdmin und WP-CLI. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.