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:

Auch Microsoft selbst bietet WordPress-Hosting auf Enterprise-Level auf Basis der Ap Services.
Auch Microsoft selbst bietet WordPress-Hosting auf Enterprise-Level auf Basis der Ap Services.

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“.

Eine lokale WordPress-Testumgebung via Docker Compose.
Eine lokale WordPress-Testumgebung via Docker Compose.

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

Docker Desktop erlaubt unter Windows eine grafisches Verwalten von Containern.
Docker Desktop erlaubt unter Windows eine grafisches Verwalten von Containern.

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

Mit Docker Desktop können Sie beispielsweise auch das Dateisystem des Containers inspizieren.
Mit Docker Desktop können Sie beispielsweise auch das Dateisystem des Containers inspizieren.

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.

Wordpress mit Docker Compose als ARM-Template.
WordPress mit Docker Compose als ARM-Template.

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:

Beim ARM-Deployment müssen Sie nur noch die WordPress-Installation im Browser abschließen.
Beim ARM-Deployment müssen Sie nur noch die WordPress-Installation im Browser abschließen.

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

Das Aktualisieren des Container-OS in Azure.
Das Aktualisieren des Container-Host-OS in Azure.

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 exec -it <container_id> /bin/bash
 
Die Container-ID ermitteln Sie mit ..

docker ps

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..