Docker Blogbeitrag 4 – Ein etwas komplexeres Szenario: WordPress in Docker

Bisher haben wir uns damit beschäftigt wie man Docker Container instanziieren, starten, stoppen und wieder entfernen kann. In der Regel laufen Anwendungen die in Docker Containern bereitgestellt werden aber nicht in einem einzelnen Container sondern verteilen sich auf unterschiedliche Container die miteinander kommunizieren können. So kann man die einzelnen Teile einer Anwendung, z.B. Datenbank und Webserver, besser voneinander trennen. Und genau das werden wir jetzt auch machen, d.h. wir werden einen Docker Container für den mysql Server der von WordPress benötigt wird erstellen und einen Docker Container für den WordPress Webserver selbst.

1.) Für unsere WordPress Installation benötigen wir als erstes einen MySQL Server als Datenbank-Backend. Hierzu nutzen wir den Befehl

docker image pull mysql

um uns das neuste MySQL Image vom Docker Hub herunterzuladen.

2.) Nachdem das Image auf unserem lokalen Rechner angekommen ist können wir nun, wie gehabt, einen Docker Container auf Basis dieses Images erzeugen. Dazu nutzen wir den Befehl

docker container run -d --name mysql -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress mysql

Dieser Befehl wird mit dem Digest des laufenden Docker Containers bestätgt.

Hier noch mal kurz eine Erklärung der Befehlszeile. -d sorgt dafür, dass der Docker Container detatched läuft, d.h. dass er unsere PowerShell Konsole nicht blockiert. –name mysql gibt den Namen des Containers an. -e MYSQL_ROOT_PASSWORD=wordpress setzt das Passwort des MySQL Servers -e MYSQL_DATABASE=wordpress erzeugt auf dem MySQL Server eine neue Datenbank mit dem Namen wordpress. mysql schließlich gibt an von welchem Image der Container erzeugt werden soll.

3.) Über den Befehl

docker container ps

können wir uns davon überzeugen, dass der Docker Container auch wirklich läuft.

4.) Eine Datenbank zu starten dauert immer ein bisschen. Würden wir direkt im Anschluss an den MySQL Docker Container jetzt auch noch den WordPress Container starten, so würde sich dieser schnell wieder beenden, da er die MySQL Datenbank nicht finden kann. Um zu überprüfen in welchem Status der Datenbankserver ist können wir den Befehl

docker container log mysql

angeben.

Dieser Befehl zeigt die Log-Dateien des angegebenen Docker Containers, in diesem Fall ist das der Container mysql an. Erst wenn wir im Log den Eintrag mysql: ready for connections sehen können  wir weitermachen, weil unser MySQL Server nun bereit ist und von außen angesprochen werden kann.

5.) Nachdem der MySQL Server nun soweit startklar ist können wir nun den WordPress Container erzeugen. Hierzu müssen wir zunächst das Image vom Docker Hub laden. Dies erledigen wir mit dem Befehl

docker image pull wordpress

Wie beim MySQL Server geben wir keine explizite Versionsnummer an, d.h. es wird die neuste verfügbare Version des Images heruntergeladen. Ist das erfolgreich geschehen wird der Digest des Images angezeigt.

6.) Nun müssen wir auf Basis dieses Images wieder einen Container erzeugen. Dies geschieht mit dem Befehl

docker container run -d --name wordpress --link mysql:mysql -p 8080:80 -e WORDPRESS_DB_PASSWORD=wordpress wordpress

Auch hier noch einmal eine kurze Erklärung der Befehlszeile. Neben den bereits bekannten Befehlen ist der Befehl –link mysql:mysql neu. Dieser Befehl besagt einfach, dass unser neuer Docker Container einen anderen Docker Container erwartet in dem ein MySQL Server ausgeführt wird. Wir geben hier an, dass dieser Container mysql heißt. Über -p 8080:80 wird das Port-Mapping nach außen definiert. Hier wird angegeben, dass der interne Port 80 nach außen auf den Port 8080 gemappt wird. Der Befehl -e WORDPRESS_DB_PASSWORD=wordpress setzt das Kennwort mit dem WordPress sich mit dem MySQL Server verbindet und dies ist dasselbe Kennwort das wir oben beim Einrichten des MySQL Servers über -e MYSQL_ROOT_PASSWORD=wordpress angegeben haben. Das Wort am wordpress Ende der Befehlszeile gibt einfach den Namen des Docker Containers an.

7.) Geben wir nun den Befehl

docker container ps

ein sehen wir, dass zwei Docker Container ausgeführt werden.

8.) Mit Hilfe des Befehls

docker container logs wordpress

können wir uns das Log des WordPress Containers anschauen. Dieses ist nicht so komplex wie das vom MySQL Container und nachdem wir den WordPress Container gestartet haben ist dieser auch direkt verfügbar.

9.) Um auf unsere WordPress Installation zuzugreifen können wir nun einfach einen Browser öffnen und dann als URL http://65.52.229.47:8080 Es wird die Installations-Seite von WordPress angezeigt. Hier wählen wir Deutsch aus und klicken dann auf Weiter.

10.) Um WordPress zu konfigurieren geben wir die folgenden Informationen ein. Als Titel der Website Testwebsite, als Benutzername test, als Kennwort !test123. Da wir ein sehr schwaches Kennwort gewählt haben müssen wir das Häkchen unter Bestätige die Verwendung eines schwachen Passworts setzen. Als nächstes geben wir eine E-Mail Adresse ein. Haben wir das alles erledigt können wir auf die Schaltfläche WordPress installieren klicken.

11.) Hat das alles soweit funktioniert wird nun die Seite Installation erfolgreich angezeigt und wir können auf die Schaltfläche Anmelden klicken.

12.) Nun werden wir auf die Anmeldeseite weitergeleitet wo wir uns mit den oben vergebenen Anmeldeinformationen einloggen können. In meinem Beispiel ist das der Benutzername test und das Passwort !test123. Nachdem diese Informationen in die entsprechenden Felder eingegeben wurden muss man nun auf Anmelden klicken.

13.) Nun wird das WordPress Dashboard – das ist die Administrations-Website von WordPress – angezeigt durch einen Klick auf Zur Website können wir zur eigentlichen WordPress Website wechseln.

14.) Es wird eine WordPress Website mit einem Standard-Design angezeigt. Damit haben wir unsere WordPress Installation am laufen und könnten nun damit beginnen eine Website aufzubauen.

15.) Zu Schluss dieser Lektion müssen wir unseren WordPress Installation auch wieder aufräumen und vom lokalen PC entfernen. Hierzu gehen wir wie folgt vor. Zunächst halten wir mit dem Befehl

docker container stop wordpress mysql

die beiden Container an. Als Ergebnis des Befehls werden die Namen der beiden Container ausgegeben.

16.) Danach entfernen wir die Container mit

docker container rm wordpress mysql

Auch hier werden wieder die Container Namen als Rückgabe ausgegeben.

17.) Um all das was wir oben erzeugt haben nun restlos zu entfernen müssen wir nun noch die Images löschen. Hierzu geben wir den Befehl

docker image rm wordpress mysql

ein. Als Rückgabe werden all die Image-Bestandteile angezeigt die vom lokalen Rechner gelöscht werden.

Schreibe einen Kommentar

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

%d Bloggern gefällt das: