Bereitstellen von WordPress in Docker Containern

Erfahren Sie, wie Sie eine WordPress-Installation in Docker-Containern ausführen, sowohl manuell als auch mit Docker Compose. WordPress-Entwickler und -Entwicklerinnen werden es nützlich finden, WordPress in Docker-Containern einzusetzen. Docker ermöglicht es Ihnen, mit mehreren WordPress-Konfigurationen zu testen und mit ein paar einfachen Befehlen eine neue WordPress-Installation zu starten.

WordPress Hosting
Ihr WordPress mit KI-Boost
  • In Sekunden zur professionellen WordPress Website mit KI-Tools
  • Jetzt bis zu 3x schneller dank SSD, Caching & optimierter Plattform
  • Tägliche Sicherheits-Scans, DDoS-Schutz und 99,98 % Verfügbarkeit

Anforderungen

Damit WordPress in Docker-Containern reibungslos läuft, benötigen Sie eine aktuelle und unterstützte Linux-Distribution. Frühere Versionen wie CentOS 7 oder Ubuntu 14.04 sind veraltet und sollten durch moderne Alternativen ersetzt werden. Empfohlen werden:

  • Ubuntu 22.04 LTS oder eine neuere Version
  • Debian 12 oder aktueller
  • Eine aktuelle Version von Red Hat Enterprise Linux (RHEL) oder AlmaLinux

Außerdem muss Docker installiert und einsatzbereit sein. Die Mindestanforderung ist Docker 20.10 oder höher, um von neuesten Sicherheits- und Performance-Verbesserungen zu profitieren. Falls Sie Docker Compose nutzen möchten, sollten Sie darauf achten, mindestens Version 2.x zu verwenden, da ältere Versionen nicht mehr aktiv gepflegt werden.

Grundkenntnisse in der Verwendung der Kommandozeile sowie Kenntnisse im Umgang mit Docker Compose und Docker sind hilfreich. Wer größere oder skalierbare Setups plant, sollte sich auch mit Kubernetes beschäftigen, um Container-Orchestrierung auf professionellem Niveau zu betreiben.

Ausführen von WordPress in Docker-Containern

Eine erfolgreiche WordPress-Installation besteht aus drei Elementen:

  • Der WordPress-Software
  • Einer MySQL- oder MariaDB-Datenbank
  • Den letzten Installationsschritten, die in einem Browser durchgeführt werden

Für die folgenden Beispiele werden die Komponenten WordPress und MySQL/MariaDB in separaten verknüpften Containern ausgeführt. Der Container, auf dem die WordPress-Software läuft, wird einem Port auf dem Host zugeordnet, so dass Sie in einem Browser darauf zugreifen können.

Ausführen eines MySQL/MariaDB-Containers

Nachdem Sie Docker gestartet haben, muss in einem ersten Schritt die Datenbank eingerichtet werden. Führen Sie hierzu zunächst einen Container namens my-db aus. Sie können entweder MySQL oder MariaDB verwenden, was ein Drop-in-Ersatz für MySQL ist.

MySQL

Starten Sie einen Container mit dem Befehl:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=SICHERES_PASSWORT -d mysql:latest

MariaDB

Starten Sie einen Container mit dem Befehl:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=SICHERES_PASSWORT -d mariadb:latest
Hinweis

Achten Sie darauf, dass Sie auf jeden Fall ein sicheres Passwort für Ihre Datenbank nutzen. Die Verwendung von Umgebungsvariablen zur Speicherung von Passwörtern ist außerdem eine potenzielle Sicherheitslücke. Stattdessen sollten vorzugsweise ein Docker Secret oder eine gesicherte Konfigurationsdatei verwendet werden.

Datenbank erstellen

Nachdem Sie Ihren Container erstellt haben, müssen Sie eine Datenbank erstellen, die Sie für Ihre WordPress-Installation nutzen wollen.

MySQL

Verbinden Sie sich mit folgendem Befehl mit Ihrem soeben erstellten Datenbank-Container:

docker exec -it my-db mysql -u root -p

Erstellen Sie eine Datenbank:

CREATE Database wordpress-db;

MariaDB

Verbinden Sie sich mit folgendem Befehl mit Ihrem soeben erstellten Datenbank-Container:

docker exec -it my-db mariadb -u root -p

Erstellen Sie eine Datenbank:

CREATE Database wordpress-db;

Ausführen eines WordPress-Containers

Als nächstes führen Sie einen Container aus dem offiziellen WordPress Image aus, der auf den Host-Port 8080 gemapt und mit dem Datenbank-Container verknüpft wird.

Zwei Anmerkungen:

  • Wenn Sie eine Firewall haben, müssen Sie möglicherweise den Zugriff auf Port 8080 hinzufügen.
  • Wenn Sie bereits einen anderen Dienst auf Port 8080 ausgeführt haben, können Sie einen anderen Port auf dem Host auswählen.

Der Befehl variiert leicht, je nachdem, ob Sie MySQL oder MariaDB verwenden:

MySQL

Starten Sie einen WordPress-Container mit dem Befehl:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mysql -d wordpress:latest

MariaDB

Starten Sie einen WordPress-Container mit dem Befehl:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mariadb -d wordpress:latest

Es gibt viele andere Umgebungsvariablen, die Sie zu diesem Befehl hinzufügen können, wenn Sie die Standardeinstellungen überschreiben möchten, einschließlich:

  • -e WORDPRESS_DB_HOST=[hostname]: Der Standard ist die IP-Adresse und der Port des verknüpften MySQL/MariaDB-Containers. Mit dieser Variable können Sie auf eine MySQL/MariaDB-Datenbank auf einem anderen Server zugreifen.
  • -e WORDPRESS_DB_USER=[username]: Der Standard ist root.
  • -e WORDPRESS_DB_PASSWORD=[password]: Der Standard ist die Umgebungsvariable MYSQL_ROOT_PASSWORD des verknüpften MySQL/MariaDB-Containers.
  • -e WORDPRESS_DB_NAME=[name]: Die Voreinstellung ist “wordpress”.

Für eine erhöhte Sicherheit kann es hilfreich sein, Container nicht im Standard-Bridge-Netzwerk laufen zu lassen. Stattdessen kann ein eigenes Netzwerk genutzt werden:

docker network create my-wp-network
docker run --name my-db --network my-wp-network -e MYSQL_ROOT_PASSWORD=SICHERES_PASSWORT -d mysql:latest
docker run --name my-wordpress --network my-wp-network -p 8080:80 -d wordpress:latest

Hier sind Ihre Container isolierter von anderen Containern, was das Risiko unerwünschter Verbindungen verringert. Zudem können Netzwerkregeln detaillierter konfiguriert werden, z. B. durch spezielle Firewall-Regeln oder den Einsatz eines Reverse Proxy.

Beenden der Installation in einem Browser

Für die letzten Installationsschritte müssen Sie über einen Browser auf den WordPress-Container zugreifen.

Im vorherigen Beispiel haben wir den Port 8080 auf dem Host auf den Port 80 (Webservices) auf dem Container gemapt. Auf diese Weise können Sie in einem Browser entweder über die IP-Adresse oder über die URL des Servers auf den Container zugreifen:

  • http://<server-ip>:8080
  • http://example.com:8080

Besuchen Sie die URL in einem Browser, wählen Sie Ihre Installationssprache und klicken Sie dann auf Continue (Weiter).

Screenshot der WordPress-Sprachauswahl
Sie können in Ihrem Browser nun die Installationssprache auswählen.

Auf der nächsten Seite erhalten Sie einen Hinweis, der Sie auf die weitere Installation vorbereitet. Klicken Sie auf die Schaltfläche „Let’s go!“, um fortzufahren.

Screenshot des WordPress-Installationshinweises
Der Installationshinweis von WordPress setzt Sie über den nächsten Schritt des Setups in Kenntnis.

Nun müssen Sie Ihre Datenbank angeben, sodass die wp-config.php-Datei erstellt werden kann:

Screenshot der WordPress-Datenbankverbindung
Geben Sie die angeforderten Informationen zu Ihrer Datenbank an.

Beachten Sie, dass der Default-User, sofern nicht anders spezifiziert, „root“ ist, und geben Sie hier den Namen Ihrer erstellten Datenbank sowie das gewählte Passwort an. Ein Klick auf „Submit“ leitet Sie weiter durch den Installationsprozess.

Screenshot der WordPress-Installation: Angaben zur WordPress-Seite
Geben Sie die angeforderten Informationen zu Ihrer WordPress-Seite an.
  • Titel der Website: Füllen Sie den Titel Ihrer Website aus.
  • Benutzername: Dies ist der wichtigste administrative Benutzername für Ihre Website. Hinweis: Aus Sicherheitsgründen empfehlen wir Ihnen, “Admin” oder den Namen oder die URL Ihrer Website NICHT für diesen Benutzernamen zu verwenden.
  • Passwort: Notieren Sie sich dieses Passwort, bevor Sie fortfahren.
  • Deine E-Mail: Dies ist die E-Mail-Adresse für den wichtigsten administrativen Benutzernamen.

Klicken Sie dann auf die Schaltfläche WordPress installieren, um die Installation abzuschließen.

Screenshot der erfolgreichen WordPress Installation
Die Erfolgsmeldung zeigt an, dass die Installation geklappt hat.

Nach geglückter Installation erhalten Sie eine Erfolgsmeldung und können sich anschließend bei WordPress einloggen.

Mit Docker Compose WordPress ausführen

Die Verwendung von Docker Compose zur Ausführung von WordPress ist ebenfalls eine Möglichkeit. Informationen zur Installation und Verwendung von Docker Compose finden Sie in unserem Artikel Docker-Orchestration mit Swarm und Compose. Grundsätzlich ermöglicht Ihnen das Tool, alle benötigten Dienste in nur einer einzigen Datei zu definieren und gemeinsam zu starten.

YAML-Datei erstellen

Erstellen Sie zunächst ein Verzeichnis für Ihr Projekt und wechseln Sie in dieses:

sudo mkdir wordpress
cd wordpress

Erstellen Sie eine YAML-Datei namens docker-compose.yml mit dem Befehl:

sudo nano docker-compose.yml

Der Inhalt der Datei variiert leicht, je nachdem, ob Sie MySQL oder MariaDB verwenden:

MySQL

Fügen Sie Folgendes in die Datei ein:

wordpress:
    image: wordpress:latest
    links:
        - wordpress_db:mysql
    ports:
        - 8080:80
wordpress_db:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: SICHERES_PASSWORT

Speichern und beenden Sie die Datei.

MariaDB

Fügen Sie Folgendes in die Datei ein:

wordpress:
    image: wordpress:latest
    links:
        - wordpress_db:mariadb
    ports:
        - 8080:80
wordpress_db:
    image: mariadb
    environment:
        MYSQL_ROOT_PASSWORD: SICHERES_PASSWORT

Speichern und beenden Sie die Datei.

Starten Sie die Container

Als nächstes verwenden Sie Docker Compose, um diese Container mit folgendem Befehl zu starten:

sudo docker-compose up -d

Mit diesem Befehl können Sie überprüfen, ob die Container erstellt wurden:

sudo docker-compose ps

Um die Installation abzuschließen, besuchen Sie den WordPress-Container in einem Browser. Verwenden Sie hierzu entweder die IP-Adresse oder die URL des Servers:

  • http://192.168.0.1:8080
  • http://example.com:8080

Kubernetes für skalierbare WordPress-Deployments

Für größere und produktive Setups kann Kubernetes (K8s) genutzt werden. Mit Kubernetes lassen sich WordPress-Container über mehrere Knoten hinweg orchestrieren und automatisch verwalten. Die Nutzung eines Kubernetes Clusters bietet eine Reihe von Vorteilen wie automatische Skalierung, Self-Healing-Mechanismen und ein zentrales Management von Ressourcen. Eine Implementierung kann beispielsweise mit Helm, einem Paketmanager für Kubernetes, erfolgen:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-wordpress bitnami/wordpress --set service.type=LoadBalancer

Dies sorgt für eine ausfallsichere, skalierbare WordPress-Bereitstellung mit Load Balancing, automatischen Updates und Failover-Support.

New call-to-action
War dieser Artikel hilfreich?
Page top