WordPress ist zweifelsohne eines der polulärsten CMS-System. Für die Bereitstellung eines WordPress-Stacks in Azure gibt es viele Möglichkeiten wie z. B. VM mit Linux, Azure App-Services mit LAMP oder XAMP-Umgebung, Azure App-Services mit Docker, einer Linux-VM als Docker-Host bis hin zur Azure Container Instance oder AKS (Kubernetes). Ich zeige Ihnen hier kurz und schmerzlos die mit Abstand schnellste Variante. Mehr Insights zu den genannten Verfahren von der Planung über die imperative oder deklarative Bereitstellung mit und ohne CI/CD bis hin zu Monitoring, Applications Insights und Backup gibt‘ s in meinem Kurs „WordPress-Bereitstellung unter Azure.“
WordPress soll wegen seiner großen Verbreitung hier als Beispiel dienen und drückt keinesfalls persönliche Präferenzen aus. Jedenfalls geht es hier nicht um eine „Wertung“ von Konkurrenten wie Drupal, Joomla oder Typo3. Im Fokus steht hier der LAMP-Stack. Ich hatte gerade selbst die Anforderung, für meinen Kurs „Azure AI Workshop“ einige der Azure-AI- und OpenAI-APIs in eine PHP-Umgebung testen zu müssen. Für einen schnellen Test möchte man sich daher nicht unnötig lange mit eine Umgebungsbereitstellung auseinandersetzen, die man später ohnehin wieder verwirft. Hier muss es nur schnell gehen.
Die komfortabelste Art, WordPress mit automatischer Skalierung, automatischer Sicherung, Beschleunigung und Ausfallsicherheit also ISO-zertifizierten Service in Azure zu betreiben ist jedoch der auf Azure-App-Services basierende PaaS-Dienst. Sie finden das Angebot neben zahlreichen Weiteren im Azure-Marktplatz:

Wir bleiben aber bei unserem Quickie. Die Bereitstellung soll auf Basis von Docker erfolgen. Da wir den Frontend-Container vom Datenbank-Container trennen möchten, können wir für die Bereitstellung Docker Compose verwenden.
Dass das mittels Docker Compose gut funktioniert, können Sie lokal leicht ausprobieren, was aber nicht zwingend für das eigentliche Thema dieses Beitrages ist. Gesetzt den Fall, dass …
- Docker auf einer Linux-Maschine installiert
- Sie Docker unter Ubuntu oder Debian im WSL2-Stack einer Windows-Maschine installieren
- oder Sie Docker Desktop nutzen (das ebenfalls auf WSL2 aufsetzt),
… müssen Sie jetzt nur ein Projektverzeichnis anlegen und darin eine „docker-compose-Datei“ mit dem Namen „docker-compose.yml“ mit folgendem Inhalt:
version: ‚3.1‘
services:
wordpress:
image: wordpress
restart: always
ports:
– „8080:80“
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
volumes:
– ./wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: use
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password
volumes:
– db_data:/var/lib/mysql
volumes:
db_data:
Die verwendeten Parameterwerte wie Datenbank-Name oder Datenbank-Passwort passen Sie natürlich an. Speichern Sie die Datei dann in ihrem Projektverzeichnis und starten das Setup mit ..
docker-compose up -d
bzw:
docker-compose -f /pfad/zu/ihrem/verzeichnis/docker-compose.yml up
Probieren Sie es aus. In der Docker-Compose-Datei wurde der Container-Port 80 auf den Host-Port 8080 gemappt, d. h. Sie finden Ich neues WordPress-CMS unter https://localhost:8080
Ich habe mein Demo-Wordpress-CMS übrigens „AI-Welt“ genannt, passend für künftige „Experimente“.

Sie können das Setup mit dem beiden beteiligten Containern (WordPress und MySQL) im Docker Desktop komfortabel verwalten:

Mit Docker-Desktop können Sie bei Bedarf auch sehr komfortabel mit dem Container selbst interagieren, beispielsweise zum Installieren zusätzlicher Software. Klicken Sie dazu einfach auf den Link mit dem Container-Namen, dann auf die drei Punkte für „More Container Actions“. Hier könnten Sie z. B. im Tab „Exec“ Befehle absetzen oder im Tab „Files“ das Container-Dateisystem inspizieren. Bedenken Sie dabei aber, dass ein Conainer keine Persistenz für Ihre Änderungen bietet, solange Sie nicht mit „docker commit“ ein neues Image und daraus einen neuen Container erzeugen

Docker-Compose in Azure
Doch genug von Docker-Desktop. Wir möchten ja ein Docker-Compose-Setup in Azure betreiben. Ein Ansatz dies zu tun, ist der Betrieb eine Linux-VM als Container-Host mit je einem Container für Frontend und Datenbank mittels Docker Compose. In Microsofts „Quickstart-Repository“ auf https://learn.microsoft.com/de-de/samples/azure/azure-quickstart-templates/docker-wordpress-mysql/ GitHub findet sich für genau diesen Fall ein passendes ARM-Template (Azure Resource Manager)
Die Vorlage stellt einen Ubuntu Server 18.04-LTS-VM mit Docker (unter Verwendung der Docker-Extension) sowie einen WordPress-Container, der auf Port 80 lauscht und eine MySQL-Datenbank verwendet, bereit. Letztere wird in einem separaten, aber verknüpften Docker-Container ausgeführt, der mit den Docker Compose-Funktionen der Azure Docker-Erweiterung erstellt wurde. Alternativ finden Sie in den Quickstart-Templates auch eine Vorlage, die WordPress auf Azure App Services hostet (ähnlich wie Microsofts eingangs vorgestelltes PaaS-Angebot selbst), aber wir wollten ja „Quick and Dirty“ bleiben.
Zur Bereitstellung klicken Sie einfach auf den o. a. Link, wählen das gewünschte Azure-Konto aus und füllen die Parameterseite der Bereitstellungsvorlage aus. Sie benötigen neben Azure-Abonnement, Ressourcengruppe und Region wie üblich einen Admin-User-Namen für die VM, ein MySQL-Password und einen Authentifizierungstyp (Passwort oder SSH-Schlüssel).
Die Vorlage ist schon etwas älter, d. h. das Speicherkonto für die VM-Datenträger brauchen Sie eigentlich nicht, weil die Datenträger heutzutage „Azure-managed“ sind. Sie können zwar nicht verhindern, dass das Speicherkonto erstellt wird, aber Sie können es nach der Bereitstellung wieder löschen.

Wurde die VM erfolgreich bereitgestellt, müssen Sie sich nur noch den DNS-Namen oder die öffentliche IP-Adresse der neuen virtuellen Maschine „MyDockerVM“ ins Clipboard kopieren und können nach kurzer Zeit die WordPress-Installation im Browser vervollständigen:

Schließlich können Sie das betagte Ubuntu 18.04.LTS leicht auf eine neuere Version aktualisieren, da es sich ja bei einer VM um IaaS handelt und Sie administrativen SSH-Zugang zur Console haben. Ich mache das in folgender Abbildung mit Putty von einer Windows-Maschine aus. Für die Aktualisierung geben Sie folgendes ein:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt autoremove
sudo apt clean

Achtung: Sie agieren an dieser Stelle mit dem Container-Host-Betriebssystem, also einer gewöhnlichen Azure-VM, ggf. mit optimierten Kernel, aber nicht mit dem Container, d. h. die Änderungen sind auch persistent. Möchte Sie Ergänzungen/Änderungen am Container selbst vornehmen, müssen Sie sich mit dem Container verbinden. Lokal klappt das wie oben gezeigt sehr komfortabel mit Docker-Desktop. Ohne eine solche GUI-Anwendungen verwenden Sie auf dem Container-Host den Befehl:
docker ps