Wo speichert meine Docker-WordPress-Website Daten?

Lesezeit: 4 Minuten

Benutzeravatar von kshah
kshah

Ich habe derzeit einen WordPress-Container in Docker eingerichtet und mit einer MySQL-Datenbank auf demselben Computer verknüpft (d nicht in einem Docker-Container). Ich habe damit herumgespielt, die Website in meinem Browser zu bearbeiten, den WordPress-Container zu löschen und einen neuen zu erstellen, der mit derselben Datenbank verknüpft ist.

Als ich dies tat, blieben die Beispielbeiträge, die ich auf meiner Website erstellt hatte, bestehen, sodass ich davon ausging, dass meine Daten lokal von meiner Datenbank gespeichert wurden. Ich habe dann jedoch versucht, mehrere Websites mit WordPress Multisite mit einem WordPress-Container einzurichten. Dazu musste ich die WordPress-Konfigurationsdatei im WordPress-Container bearbeiten.

Ich habe diesen Container gelöscht und wie zuvor einen neuen erstellt. Ich habe versucht, die Konfigurationsänderungen in diesem Container zu replizieren, aber wenn ich zu meiner Website navigiere, wird mir nur ein weißer Bildschirm angezeigt. Das lässt mich vermuten, dass die MySQL-Datenbank plötzlich auf leere Tabellen zeigt.

Wo werden meine WordPress-Vorlagen/Infos tatsächlich gespeichert?

BEARBEITEN: Unten ist der Befehl, den ich ausführe

sudo docker run -p 80:80 --name wordpress_local -e WORDPRESS_DB_HOST=(machine's IP address) -e WORDPRESS_DB_USER=user -e WORDPRESS_DB_PASSWORD=password -d wordpress

Hinweis: Dies setzt voraus, dass ich eine lokale MySQL-Datenbank eingerichtet habe, die Verbindungen von akzeptiert 0.0.0.0 und hat einen Benutzer angerufen user mit Passwort password

Ich weiß, dass mein Container ordnungsgemäß mit der Datenbank verknüpft ist, indem ich mir die Protokolle ansehe (und die Tatsache, dass ich auf die Website zugreifen kann – es wird nur eine leere Seite angezeigt).

BEARBEITEN 2: Wenn ich mir mein WordPress-Container-Dateisystem ansehe, kann ich durch verschiedene Ordner navigieren und Inhalte wie Themes/Plugins sehen, die ich installiert habe. Warum wird dies nicht auf meinem lokalen Computer gespeichert? (Entschuldigung, wenn dies eine dumme Frage ist – ich bin sowohl bei MySQL als auch bei Docker neu)

  • kannst du dein Dockerfile oder einen Reproducer zeigen?

    – Benutzer2915097

    11. Juni 2015 um 14:09 Uhr

  • Ich habe kein Dockerfile, sondern führe stattdessen nur einen Befehl aus, um meinen Container zum Laufen zu bringen. Die einzigen Dinge, die ich an meiner MySQL-Datenbank getan habe, sind: sicherzustellen, dass sie läuft, und sicherzustellen, dass sie einen Benutzer mit Berechtigungen für eine von mir erstellte WordPress-Datenbank hat

    – kschah

    11. Juni 2015 um 14:17 Uhr

  • Sie können jederzeit den WordPress-Container eingeben docker exec -it container_id bash und verwenden Sie lsof oder ein solches Tool, um zu sehen, wo es gespeichert ist

    – Benutzer2915097

    11. Juni 2015 um 15:26 Uhr

  • ist Registry.hub.docker.com/_/wordpress Ihr Docker-Image?

    – Thomasleveil

    11. Juni 2015 um 16:30 Uhr

  • @Thomasleveil ja, ich glaube, das ist das Bild, das ich verwende

    – kschah

    11. Juni 2015 um 16:58 Uhr

Wenn Sie den WordPress-Container zum ersten Mal ausführen, lädt das Initialisierungsskript die WordPress-Codebasis herunter /var/www/html und starten Sie dann den Webserver. Da alles in einem Container kurzlebig ist, geht die Codebasis mit allen von Ihnen vorgenommenen Änderungen verloren, wenn Sie den Container erneut ausführen (es sei denn, Sie stoppen/starten einfach den Container, was für dieses Szenario nicht die beste Option ist).

Was Sie brauchen, ist, dass dieser Ordner dauerhafte Daten enthält. Um dies zu erreichen, müssen Sie einen Ordner vom Hostcomputer im Container bereitstellen:

sudo docker run -p 80:80 \
   --name wordpress_local \
  -e WORDPRESS_DB_HOST=(machine's IP address) \
  -e WORDPRESS_DB_USER=user \
  -e WORDPRESS_DB_PASSWORD=password \
  -d \
  -v `pwd`/html:/var/www/html \
  wordpress

Vergessen Sie nicht, der Ordner sollte bereits erstellt sein: mkdir -p data

  • Ich verstehe. Ich verstehe jedoch immer noch nicht, welchen Zweck meine MySQL-Datenbank hat. Sollte meine Datenbank die Daten nicht in einem lokalen Verzeichnis speichern? Warum brauche ich überhaupt eine Datenbank, wenn ich diese Methode verwende, um einen Ordner auf meinem Computer bereitzustellen?

    – kschah

    15. Juni 2015 um 14:42 Uhr

  • Wenn Sie “Container erneut ausführen” erwähnen, meinen Sie auch, den Container auf ein Image zu übertragen und dann das Image auszuführen? Das einzige Szenario, in dem ich dies tun würde, ist, wenn ich mich entscheide, das Image in ein Repository zu verschieben und die Website beispielsweise auf einem anderen Computer ausführen möchte. Müsste ich in diesem Szenario nicht immer noch die Dateien im bereitgestellten Ordner auf meinem Computer kopieren?

    – kschah

    15. Juni 2015 um 14:46 Uhr

  • MySQL benötigt ein lokales Verzeichnis zum Speichern der Daten (in Ubuntu/Debian befindet es sich in /var/lib/mysql) und der WordPress-Container benötigt ein anderes Verzeichnis, um den ausgeführten Code, Uploads usw. zu speichern. Meine Antworten lösen das Problem der Persistenz der Daten des WordPress-Containers.

    – george.yord

    18. Juni 2015 um 8:52 Uhr

  • Was das “erneute Ausführen des Containers” betrifft, wenn Sie Lauf Container von ein Bild erstellen, fügen Sie eine schreibgeschützte Dateiebene über dem Bild hinzu. Diese Dateischicht geht verloren, wenn Sie den Container killen/löschen, also wenn Sie Lauf wieder wird der container eine neue dateischicht ohne die daten der verlorenen erstellt. Damit diese Dateischicht bestehen bleibt, müssen Sie die in meiner Antwort beschriebene Lösung verwenden. Erhalten Sie weitere Informationen für Containerzustände Hier

    – george.yord

    18. Juni 2015 um 8:52 Uhr

  • Sie haben meine Frage beantwortet, aber wenn ich auch fragen könnte: Was bringt es, einen Container an ein Image zu übergeben, wenn das Dateisystem verloren geht? Oder verstehe ich etwas falsch?

    – kschah

    19. Juni 2015 um 15:53 ​​Uhr

1438030cookie-checkWo speichert meine Docker-WordPress-Website Daten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy