Dieses Tutorial ist VALID.

Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

WordPress Docker Container

Unser selbst gebautes Docker Image aus dem letzten Kapitel binden wir jetzt als Container über Traefik ans Internet an. Damit starten wir unser Content Managemet System (CMS) „WordPress“ zum ersten Mal. WordPress war für mich ja das große Ziel der Unternehmung. Also schauen wir mal, wie es läuft!

Voraussetzungen

Für dieses Tutorial müssen die folgenden Voraussetzungen erfüllt sein:

WordPress Container Setup vorbereiten

Da wir unser WordPress von außen über das Internet als Web-Dienst aufrufen, brauchen wir einen neuen DNS-Eintrag. Außerdem legen wir ein Stammverzeichnis für WordPress und seine Konfigurationsdatei unterhalb von „/var/www“ an. Dann erstellen wir noch eine Datenbank zusammen mit einem Datenbankbenutzer. Diese Datenbank ist für die Speicherung aller Texte unserer Seiten, der Kommentare, Einstellungen und Benutzerinformationen da. Dateiinformationen werden auch hinterlegt, die Dateien aber, wie auch bei Nextcloud, direkt im Dateisystem und nicht in der Datenbank abgelegt.

DNS-Eintrag für die Subdomain „wordpress“ anlegen

Wie gewohnt legen wir jetzt einen DNS-Eintrag für unseren WordPress Container an. Dazu loggen wir uns auf der Oberfläche unseres Domain-Anbieters ein. In meinem Fall das „Customer Control Center“ von Netcup. Hier wechseln wir auf unsere Domain, die wir editieren möchten, und dort in den Reiter „DNS“. Wir erstellen eine Sub-Domain „wordpress“. In meinem Fall heißt die volle Domain dann „wordpress.xp-server.de“. Typ „A“ für „Domain-Eintrag“. Dann die IP des Servers eingeben und die DNS-Einstellung anschließend abspeichern.

Nach dem Anlegen des DNS-Eintrags dauert es ein Weilchen, bis sich dieser durch die Schichten des DNS-Systems im Internet ausbreitet. Aber nach 15 bis 45 Minuten sollte der Eintrag „sichtbar“ sein. Überprüfen kann man das mit einem „Ping“ auf den Domainnamen.

Datenbank und Datenbankbenutzer hinzufügen

Wie erwähnt braucht so ziemlich jede große Web-Anwendung dieser Tage eine Datenbank im Rücken, in der aller möglicher organisatorischer Krempel abgelegt wird. WordPress macht hier keine Ausnahme. Zum organisatorischen kommen bei einem CMS wie WordPress noch die kompletten Texte, die wir auf unseren Seiten schreiben, und in der Datenbank abgelegt werden. Darum müssen wir jetzt im MariaDB-Server eine neue Datenbank anlegen und einen Benutzer dafür hinzufügen.

An dieser Stelle möchte ich noch einmal erwähnen, dass wir uns angewöhnen sollten, wie generell bei Passwörtern auch, für jeden Dienst eine eigene Datenbank mit eigenem Benutzer und eigenem Passwort zu erstellen. Gerade bei vielen WordPress Instanzen ist es verlockend, nur einen Benutzer anzulegen, dem dann alle WordPress-Datenbanken gehören. Aber damit steigt das Risiko, dass irgendwas schief läuft und wir eine Menge Probleme bekommen. Darum lieber auf „Nummer Sicher“ gehen und für jeden Dienst ein individuelles Set von Benutzern, Datenbanken und Passwörtern anlegen!

Im MariaDB Container Tutorial haben wir ja schon mal einen Benutzer für die Datensicherung angelegt. Hier ist das im Grunde das gleiche Prozedere, nur kommt noch eine Datenbank mit hinzu…

Für dieses Tutorial wähle ich folgende Werte:
Datenbankname: wp_data
Datenbankbenutzer: wp_user
Datenbank Passwort: unglaublichsicherespasswort

Wir haben hier zum ersten Mal eine Trennung von Benutzername und Datenbankname. Wer möchte, kann aber auch beide gleich lauten lassen wir zum Beispiel „wp_(domain)“. Nur sollte halt für jede Domain, die wir online bringen, ein eigenes Set erstellt werden :)

mysql -h 127.0.0.1 -u root -p
### root Passwort von MariaDB eingeben...

CREATE DATABASE wp_data;
CREATE USER 'wp_user'@'%' IDENTIFIED BY 'unglaublichsicherespasswort';
GRANT all ON wp_data.* TO 'wp_user'@'%';
FLUSH PRIVILEGES;
SHOW DATABASES;
exit;

Über Zeile 1 loggen wir uns vom Host aus in den Datenbankserver ein. Hier das root PW von MariaDB eingeben.

Zeilen 4-7 sind die SQL-Befehle zum Anlegen der Datenbank (4), dem Hinzufügen des Benutzers und Übergabe seines Passworts (5), dem Zuweisen aller Rechte der Datenbank „wp_data“ an den Benutzer „wp_user“ (6), gefolgt vom Neu Einlesen der Benutzerrechte des Datenbankservers (7).
[Bitte beachten: Immer Unterstriche (_) und keine Bindestriche (-) verwenden, sonst kommt es zu Problemen…]

Mit Zeile 8 lassen wir uns alle Datenbanken anzeigen. In der Ausgabe taucht jetzt unsere ganz frisch erstellte „wp_data“ auf. Das ist nur eine schnelle Kontrolle :)

Durch den „exit“ Befehl verlassen wir den Datenbankserver und kehren zu unserem Host System zurück.

Anzeige *

6 Kommentare zu „WordPress Docker Container“

  1. Hallo Peter,
    erstmal vielen Danke für deine Tutorials. Dadurch habe ich es geschafft auf meinem Heimserver eine WordPressinstallation mit Rev.Proxy zu installieren.
    Jetzt habe ich aber ein Problem mit dem Matomo iFrame in meine Datenschutzerklärung. Leider wird mit der Inhalt im Frame nicht angezeigt, ich bekomme im Edge die Meldung, dass „Dieser Inhalt kann nicht in einem Frame angezeigt werden.
    An dieser Stelle sollten Sie eigentlich Inhalte sehen, aber der Herausgeber lässt die Anzeige in einem Frame nicht zu. Dadurch wird die Sicherheit der Informationen gewährleistet, die Sie ggf. auf dieser Website eingeben.“

    Wenn ich den Link anklicke wird mir der Inhalt auf einer extra Seite korrekt angezeigt.

    Habe keine Ahnung wo ich da anfagen soll. Bzw. wo das Problem liegt (WordPress,Ninja-Firewall,Traefik,Matomo)? Vielleicht kannst du mir helfen?

    Grüße Oliver

    1. Hallo Oliver,
      vielen Dank für das Lob! Dann hat sich die ganze Mühe auch rentiert, wenn ich jemand damit helfen konnte.

      Ich glaube, dass Dein iframe Link beim Kopieren oder Einfügen geändert wurde. Da stehen hinter den Anweisungen jeweils (ich muss das gesperrt schreiben, sonst wird das auch interpretiert) [& a m p ;], was da eigentlich nicht hingehört.

      In Gutenberg mach ich den Iframe mit einem „HTML“-Block, damit der 1:1 dargestellt und nicht interpretiert wird.

      Was auch sein kann sind besondere Security Header (X-Frame-Options), welche das Ausliefern von Iframes unterbinden. Aber da sehen ich auf Deiner Seite eigentlich nichts davon.

      Probier mal bitte, den Iframe als „HTML“-Block neu zu setzen. Ich hoffe, dass es das war :)

      Update: Ist doch ein Security Frame, der Inspector bringt mir diese Ausgabe:
      [ Laden verboten durch X-Frame-Options: „DENY“ ]

      Update 2: Mea Culpa…
      Ich hab beim traefik nicht aufgepasst. Da gehört für Matomo einer der Labels anders gesetzt, sonst haben wir den Salat.
      In Zeile 30 der docker-compose.yml Datei von matomo gehört „traefik.frontend.headers.frameDeny=true“ auf „false“ gesetzt.
      Danach den Container stoppen, starten und es müsste gehen.

        1. Super, danke für die Rückmeldung :)
          Hab das Tutorial entsprechend angepasst, damit da keiner mehr drüber stolpert.
          Noch viel Erfolg mit Deiner Webseite und einen „Guten Rutsch“ in neue Jahr!

    1. Noch mal Danke für diesen Hinweis, Christian!

      Da dachte ich, dass sich im WordPress Image das Apache Modul „remoteip“ darum kümmert?

      Vorher hab ich das über die Datei „.htninja“ im Webroot von WordPress gelöst…
      Mehr Info: http://nintechnet.com/ninjafirewall/wp-edition/help/?htninja

      Wobei die Lösung direkt über die wp-config.php schon sehr elegant ist, muss ich sagen…

      Und gern geschehn! Wenn die ganze Dokumentation für jemand hilfreich war, hab ich sie gerne ins Netz gestellt :)

Kommentar verfassen

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

Verwendung
von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.

Scroll to Top