Heim >CMS-Tutorial >WordDrücken Sie >Wie man Docker -Container für WordPress manuell erstellt

Wie man Docker -Container für WordPress manuell erstellt

Lisa Kudrow
Lisa KudrowOriginal
2025-02-17 13:03:101004Durchsuche

Wie man Docker -Container für WordPress manuell erstellt

In meinem vorherigen Artikel haben wir abgedeckt, was Docker ist und wie man mit ein paar Befehlen auf dem Betrieb geht. Wir haben jedoch noch nichts Nützliches getan. Es gibt zahlreiche Möglichkeiten, eine WordPress -Umgebung mit Docker zu erhalten. In diesem Artikel zeige ich Ihnen, wie Sie Docker -Container manuell einrichten, um mit WordPress zu arbeiten. Wenn Sie ein kurzes Intro in Docker möchten, können Sie hier zum ersten Artikel zurückkehren.

Key Takeaways

  • Docker kann manuell für die Arbeit mit WordPress eingerichtet werden, indem Container für MySQL und WordPress erstellt werden. Der MySQL -Container wird mit einem MySQL -Bild von Docker Hub erstellt, während der WordPress -Container aus einem PHP -Bild erstellt wurde.
  • Der MySQL -Container erfordert, dass beim ersten Erstellen eine Umgebungsvariable übergeben wird und das Kennwort für den Root -Benutzer festgelegt wird. Zusätzliche Umgebungsvariablen können ebenfalls an den Container übergeben werden, wie z.
  • Das PHP -Bild für den WordPress -Container hat nicht standardmäßig die MySQL -Erweiterung installiert. Dies kann durch Erstellen eines Containers über eine Dockerfile fixiert werden, die das Bild von PHP: 5.6-Apache verwendet, die MySQLI-Erweiterung installiert und Apache2-Forground ausführt.
  • Der WordPress -Container muss mit dem MySQL -Container verknüpft werden, damit die Datenbank funktionieren kann. Dies erfolgt mit dem Argument –link beim Ausführen des WordPress -Containers mit dem Namen des MySQL -Containers als erster Teil und als Alias ​​als zweiter Teil.
  • Es kann Probleme mit Dateiberechtigungen und der IP -Adresse des WordPress -Containers geben, die sich jedes Mal ändern, wenn sie neu gestartet werden. Diese können behandelt werden, indem die DockerFile so geändert wird, dass eine Eintragspoint.SH-Datei einbezogen wird, die den Schreibzugriff auf das Dateisystem des Containers gewährleistet, und durch Hinzufügen von Zeilen zur Datei wp-config.php, die die URL "Home" und "Site" als den Server definieren IP -Adresse.
MySQL

einrichten

Jede WordPress -Installation benötigt eine MySQL -Datenbank. Dazu gehen wir zu Docker Hub und finden ein MySQL -Bild.

Das Docker -Team verfügt bereits über ein MySQL -Image, das wir verwenden können. Lesen Sie die Dokumentation für dieses Bild vor, bevor Sie Befehle auf dem Terminal ausführen. Die neueste Version zum Zeitpunkt des Schreibens ist 5.7. Der neueste Tag -Name ist jedoch 5.6. Die neueste Version eines Bildes kann für jede frühere Version sein, aber eine in seinem stabilen Zustand.

Wie man Docker -Container für WordPress manuell erstellt Der Grundbefehl zum Einrichten eines Containers mit diesem Bild ist:

docker run --name wordpressdb -d mysql:5.7
Wie man Docker -Container für WordPress manuell erstellt Wenn Sie vor Ort noch keine Kopie des Bildes haben, wird Docker das für Sie aus dem Docker -Hub ziehen. Wir wissen bisher, dass -der Name unserem Container einen Namen gibt, –D stellt sicher, dass unser Container im Hintergrund ausgeführt wird.

Wenn Sie Docker PS ausführen, sehen Sie, dass WordPressDB -Container nicht ausgeführt wird. Es sollte allerdings laufen. Führen Sie Docker -Protokolle WordPressDB aus und Sie sehen eine Nachricht wie folgt:

docker run --name wordpressdb -d mysql:5.7

Warum ist das so? Dies liegt daran, dass wir beim ersten Erstellen des Containers kein Stammkennwort als Argument übergeben haben. Also lass uns genau das tun. Zunächst müssen wir den Container löschen, den wir mit dem Namen WordPressDB mit Docker RM WordPressDB erstellt haben. Dies liegt daran

Erstellen wir also unseren Container erneut. Wir müssen eine Umgebungsvariable bestehen, wenn wir den Container zum ersten Mal erstellen. Es sollte ungefähr so ​​aussehen:

error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
-E mysql_root_password = Passwort ist eine Umgebungsvariable. Wenn der Container aus dem Bild erstellt wird, liest er diese Variable und legt das Kennwort für den Stammbenutzer auf den angegebenen Wert fest, was in diesem Fall Passwort ist.

Wenn Sie jetzt Docker -Protokolle WordPressDB überprüfen, werden Sie eine sehr lange Nachricht sehen, aber keine Sorgen darüber, dass es funktioniert. Führen Sie noch einmal Docker PS aus und Sie sehen einen Container mit dem aktiven Namen WordPressDB, der aktiv ist und läuft.

Sie können auch andere Umgebungsvariablen an Ihren Container weitergeben. Sie finden eine vollständige Liste in der MySQL -Bilddokumentation. Hier ist ein weiteres Beispiel:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
Wenn Sie versucht haben, den vorherigen Container mit dem Namen WordPressDB zu entfernen, ist er wahrscheinlich fehlgeschlagen. Das liegt daran, dass der Container noch im Hintergrund lief. Sie können zuerst den laufenden Behälter stoppen und dann entfernen oder einfach erzwingen, es zu entfernen:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
Wenn wir MySQL_Database verwenden, stellt sie sicher, dass eine Datenbank mit diesem Namen erstellt wird. Auf diese Weise wissen wir sicher, wie der Name der Datenbank und des Wurzelkennworts lautet. Sie können auch einen anderen Benutzer mit Kennwort und Datenbank erstellen. Hier ist ein kurzer Test für Sie, schauen Sie sich ihre Dokumente an und versuchen Sie, dies selbst zu tun.

Wenn Sie mehr wissen möchten, wie dieser Container erstellt wird, schauen Sie sich die Dockerfile an. Es verwendet Debian Wheezy und baut den Container mit Bash -Befehlen auf. Es zieht es aus dem Repository und startet dann MySQLD. Wenn

Ihren Container aus diesem Bild erstellt, wird das erste Mal die Befehle der Build -Datei ausgeführt. Wenn den Container verwendet, wird es nur MySQLD ausführen.

Wie man Docker -Container für WordPress manuell erstellt Jetzt, da wir einen laufenden MySQL -Container haben, können wir einen Container ausführen, der WordPress ausführt.

Erstellen eines WordPress -Containers

Für diesen Container verwenden wir das PHP -Bild. Es gibt drei Arten von PHP -Bildern, wir benötigen nur das PHP -Bild, das mit Apache geliefert wird.

docker rm -f wordpressdb
Ohne Option -d wird sie nicht im Hintergrund ausgeführt, stattdessen zeigt es Ihnen alles, was der Container ausgibt (genauso wie Docker -Protokolle [Container_Name]).

Aus der Ausgabe können Sie diesem Container automatisch eine IP zugewiesen. In meinem Fall ist es 172.17.0.35. Wenn Sie diese Adresse mit Ihrem Browser besuchen, erhalten Sie einen verbotenen Fehler. Warum ist das so? Dies liegt daran

Wie können wir Dateien in diesen Ordner einfügen? Standardmäßig bleibt dieser Ordner im Container und ist unsichtbar. Nicht lange (vergessen Sie nicht, RM WordPress zu docken). Erstellen Sie zuerst einen Ordner und navigieren Sie darin (vergessen Sie nicht, den alten WordPress -Behälter zu entfernen).

docker run --name wordpressdb -d mysql:5.7
-V wird zum Zuordnen von zwei Ordnern verwendet. Der erste Teil ist der Ordner in Ihrem Betriebssystem und der zweite der Ordner im Container -Dateisystem. Bei Unix-ähnlichen Systemen gibt der "$ pwd" den Ort zurück, an dem der Terminal ausgeführt wird. Wenn Sie zum ersten Mal ein Terminal starten, sind Sie in Ihrem Heimverzeichnis. Das Äquivalent unter Windows ist CD. Mehr über PWD finden Sie hier.

In unserem Beispiel ist der erste Teil "$ pwd/", das lokale Verzeichnis und der zweite Teil ist/var/www/html/. -V verlangt beides, um vollständige Wege zu sein. Wenn wir jedoch in unserem Arbeitsverzeichnis nachsehen, können wir sehen, dass dort keine Dateien vorhanden sind. Erstellen Sie eine Datei namens Index.php, die Folgendes enthält:

error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
Überprüfen Sie dies erneut in Ihrem Browser. Dieses Mal werden Sie feststellen, dass sich die IP -Adresse geändert hat, da wir einen neuen Container erstellt haben. Jedes Mal, wenn wir einen neuen Container erstellen, ändert er seine IP. Wenn Sie diese Nachricht in Ihrem Browser sehen, haben Sie alles richtig gemacht.

Lassen Sie uns sehen, was es passiert, wenn wir die WordPress -Dateien dort einstellen. Stoppen Sie den Container mithilfe von Docker Stop WordPress. Nehmen Sie die neueste Kopie von WordPress von WordPress.org und lassen Sie die Dateien in den Projektordner fallen. Starten Sie den Container erneut mit Docker Start WordPress. Beachten Sie außerdem, dass Sie die Dateien zunächst lesbar machen müssen. Sie können CHMOD -R 777 -ProjektFolder auf *Nix -Systemen ausführen. Wenn Sie die Seite neu laden, sagt Ihnen Ihr Browser:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
standardmäßig ist das PHP -Bild nicht in der MySQL -Erweiterung installiert, aber wir können das beheben. Diesmal erstellen wir einen Container über eine Dockerfile. Wir haben bereits gesehen, wie Dockerfiles funktionieren. Sie werden aus einem Basisbild erstellt, eine Verarbeitung durchführen und am Ende einen Befehl ausführen.

Erstellen Sie eine neue Datei namens Dockerfile:

Wir möchten das Php: 5.6-Apache-Bild verwenden.

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
Dann installieren wir die MySQLI -Erweiterung.

docker rm -f wordpressdb
Als nächstes müssen wir Apache2-Feur für das PHP-Bild ausführen (wir mussten die MySQL-Erweiterung nur installieren).

.

docker run --name wordpress php:5.6-apache

Verwenden von Build -Dateien können wir Bilder erstellen. Mit diesem Bild erstellen wir den Behälter.

docker run --name wordpress -v "$PWD/":/var/www/html php:5.6-apache

Der -t wird verwendet, um einen Repository -Namen anzugeben. Der . sagt Docker, wo sich die Dockerfile befindet. Da sich die Dockerfile im Arbeitsverzeichnis befindet ,. sagt Docker, dass es sich im Arbeitsverzeichnis befindet.

Wenn Sie die Bilder mit Docker -Bildern überprüfen, sehen Sie jetzt ein neues Bild mit dem Tag -neuesten (da wir kein Tag für dieses Bild angegeben haben). Erstellen Sie nun Container diesen Container mit diesem Bild wie mit Php5.6-Apache-Bild.

docker run --name wordpressdb -d mysql:5.7

Überprüfen Sie Ihren Browser für die IP Container und Sie werden so etwas sehen:

Wie man Docker -Container für WordPress manuell erstellt

Wenn Sie so weit gekommen sind, haben Sie alles richtig gemacht. Jetzt müssen wir WordPress mit einer Datenbank verknüpfen. Dies ist alles andere als die berühmte 5 -minütige Installation von WordPress und komplexer, aber Sie werden die Vorteile von Docker auf lange Sicht sehen.

Wie verknüpfen wir WordPress mit der Datenbank? Zuerst müssen wir den WordPress -Container mit einem Datenbankcontainer (WordPressDB) verknüpfen. Dies kann durch Verknüpfung von zwei Behältern erfolgen. Weitere Informationen zum Verknüpfen finden Sie hier.

error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?

Die neuen Argumente sind -Link. Der erste Teil WordPressDB ist der Name des Containers, den wir verlinken möchten, und der zweite Teil MySQL ist der Alias. Docker modifiziert den Host des WordPress -Containers und legt die IP des WordPressDB auf MySQL fest. Wenn wir also die Informationen für die Datenbank zur WordPress -Konfiguration füllen, setzen wir den Host auf "MySQL".

Gehen Sie nun mit der IP des Containers (der neuen IP) zu Ihrem Browser. Füllen Sie die Informationen für die Datenbank aus und melden Sie sich im Administratorbereich an. Wenn Sie versuchen, ein neues Thema zu installieren (das versucht, Änderungen am Dateisystem vorzunehmen), sehen Sie so etwas:

Wie man Docker -Container für WordPress manuell erstellt

Warum ist das so? Dies liegt daran, dass der Benutzer, der Apache ausführt, keinen Schreibzugriff auf dem Dateisystem hat. Hier werden die Dinge etwas schwierig. Wir müssen eine neue Version des Phpwithmysql -Bildes erstellen. Gehen Sie zu Ihrer Dockerfile und ändern Sie es so, dass es so aussieht:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7

Wir haben noch keine EntryPoint.sh -Datei erstellt, aber wir werden dies in Kürze tun. Kopienkopien Eintragspoint.sh nach / innerhalb des Containers. CHMOD 777 /ENTRYPOPT.SH DIE DATELAUSFORDERATION. Und schließlich führt der Einstiegspunkt diese Datei aus. Erstellen Sie nun die Datei "Entrypoint.sh -Sh in demselben Verzeichnis wie die Dockerfile.

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7

Dies ist die vereinfachte Problemumgehung des offiziellen WordPress -Images, sorgt jedoch dafür, dass wir einen Schreibzugriff auf das Dateisystem des Containers haben. Wir können jetzt das neue Bild erstellen:

docker rm -f wordpressdb

Stellen Sie sicher, dass Sie die alten Behälter entfernen und die neuen Behälter erstellen:

docker run --name wordpress php:5.6-apache
docker run --name wordpress -v "$PWD/":/var/www/html php:5.6-apache
<span><span><?php 
</span></span><span>
</span><span><span>phpinfo();
</span></span><span>
</span><span><span>?></span></span>

Entfernen Sie auch die alte WP-config.php-Datei.

Überprüfen Sie nun die IP für Ihren WordPress -Container in Ihrem Browser. Dieses Mal können Sie Themen und Plugins installieren und Änderungen am Container -Dateisystem vornehmen.

Einige der obigen Schritte mögen ziemlich kryptisch und komplex erscheinen. Deshalb gibt es offizielle Bilder für viele verschiedene Frameworks und Sprachen. Jeder Rahmen oder jede Sprache hat unterschiedliche Spezifikationen darüber, wie sie funktionieren. Standardmäßig erlaubt Docker nicht, dass die Anwendung in das Dateisystem schreiben kann. Ist das eine schlechte oder gute Sache? Ich denke, es ist eine gute Sache. Wir könnten einen dritten Container erstellen, der nur Dateien enthält. Dort könnte die Anwendung Dateien schreiben. Auf diese Weise hätten wir eine modularere Architektur. Aber für diese Frameworks, die nicht geändert werden können (wie WordPress), gibt es Problemumgehungen.

endgültige Tweaks

Das Letzte, was wir tun müssen, ist, ein Problem zu umgehen, das auftritt, wenn Sie den WordPress -Container stoppen und es erneut starten. Das Problem ist, dass WordPress die letzte IP als URL „Home“ und „Site“ spart. Stoppen Sie den WordPress -Container und starten Sie es erneut. Diesmal wird es eine neue IP haben. Wenn Sie dies in Ihrem Browser versuchen, sehen Sie, dass Bilder, CSS und JavaScript -Dateien nicht ordnungsgemäß enthalten sind. Die Lösung ist einfach. Ändern Sie einfach die wp-config.php, indem Sie diese Zeilen hinzufügen:

docker run --name wordpressdb -d mysql:5.7

Beachten Sie, dass Sie diese Werte, wenn Sie diese Werte in Ihrer Datei wp-config.php definieren, sie später in allgemeinen Einstellungen nicht ändern können.

Schlussfolgerung

In diesem Artikel haben wir behandelt, wie wir Container für WordPress erstellen können. Wir haben es auf ziemlich kryptische Weise getan, mit langen Befehlen, die schwer zu erinnern sein können. Es sollte einen einfacheren Weg geben, und das gibt es! Das Docker -Team hat ein WordPress -Bild erstellt, das Sie in Minuten problemlos einrichten können. Wer möchte sich an jeden Befehl erinnern, um WordPress einzustellen?

Im nächsten Artikel in dieser Serie zeige ich Ihnen, wie das offizielle WordPress -Bild verwendet wird, und wir lernen auch, wie man Docker komponiert, um die Dinge noch einfacher zu machen.

Warum habe ich diesen Artikel geschrieben, wenn es einen einfacheren Weg gibt? Im Wesentlichen war es, ein besseres Verständnis dafür zu bekommen, wie Docker funktioniert, um dies zu tun, um die Hände mit den zugrunde liegenden Komplexitäten schmutzig zu machen. Es ist eher eine persönliche Regel. Wenn ich morgen Docker benutze, werde ich mehr darüber wissen, wie es funktioniert und wie ich es für meine Bedürfnisse optimieren kann. Ich hoffe, Sie haben jetzt auch ein tieferes Verständnis dafür, wie Docker hinter den Kulissen arbeitet. Seien Sie gespannt auf den dritten Artikel über diese Serie, in dem wir noch mehr Spaß mit Docker und WordPress haben werden.

Was denkst du über Docker bisher? Würden Sie es in Ihrem nächsten Projekt betrachten? Lassen Sie mich in den Kommentaren unten wissen.

häufig gestellte Fragen (FAQs) zum Erstellen von Docker -Containern für WordPress

Wie kann ich sicherstellen, dass mein Docker -Container für WordPress sicher ist? Um sicherzustellen, dass Ihr Container sicher ist, verwenden Sie immer die neueste Version von Docker und WordPress. Aktualisieren Sie regelmäßig Ihre Docker -Bilder und -Container so, dass sie die neuesten Sicherheitspatches enthalten. Verwenden Sie auch Docker Secrets, um sensible Daten wie Passwörter zu verwalten. Vermeiden Sie es, Docker -Container als Wurzel auszuführen, um den möglichen Schaden zu minimieren, wenn ein Behälter beeinträchtigt wird. Verwenden Sie zuletzt Docker Security Scaning -Tools, um Schwachstellen in Ihren Bildern zu identifizieren und zu beheben.

Wie kann ich die Leistung meines Docker -Containers für WordPress optimieren? WordPress, überlegen Sie, ob Sie ein leichtes Basisbild verwenden. Dies reduziert die Größe des Bildes und beschleunigt den Build -Prozess. Verwenden Sie auch die mehrstufigen Builds von Docker, um die Abhängigkeiten der Build-Time und der Laufzeit zu trennen, wodurch die Größe Ihres endgültigen Bildes erheblich reduziert werden kann. Beschränken Sie außerdem die Ressourcen (CPU, Speicher), die Ihr Container verwenden kann, um zu verhindern, dass alle verfügbaren Ressourcen auf dem Host -Computer konsumiert werden. 🎜> Docker bietet mehrere Tools zur Fehlerbehebung. Verwenden Sie den Befehl "Docker -Protokolle", um die Protokolle eines laufenden Containers anzuzeigen. Wenn Ihr Container abstürzt, verwenden Sie den Befehl "Docker Inspect", um weitere Informationen über den Container zu erhalten. Sie können auch den Befehl "Docker -Statistiken" verwenden, um die Ressourcenverwendung Ihrer Container zu überwachen. Wenn Sie mit Netzwerkproblemen konfrontiert sind, verwenden Sie den Befehl "Docker Network Inspect", um Ihr Docker -Netzwerk zu inspizieren. WordPress -Site in einem Docker -Container können Sie den Befehl "Docker CP" verwenden, um Dateien aus dem Container in den Host -Computer zu kopieren. Sie können auch Docker -Volumes verwenden, um Daten zu bestehen. Wenn Sie eine MySQL -Datenbank verwenden, können Sie den Befehl 'mySQldump' verwenden, um eine Sicherung Ihrer Datenbank zu erstellen. Bietet mehrere Tools für Skalierungsanwendungen. Sie können Docker Compose verwenden, um Multi-Container-Anwendungen zu definieren und auszuführen, und diese skalieren, indem Sie die Anzahl der Containerinstanzen erhöhen. Sie können auch Docker Swarm oder Kubernetes verwenden, beispielsweise Orchestrierungswerkzeuge, die Ihre Container über mehrere Hosts hinweg verwalten und skalieren können. Sie können die Bereitstellung Ihrer WordPress -Site in Docker -Containern mit CI/CD -Tools wie Jenkins, Travis CI oder GitHub -Aktionen automatisieren. Diese Tools können Ihre Docker -Bilder erstellen, Tests ausführen und Ihre Container für einen Docker -Host oder einen Kubernetes -Cluster bereitstellen.

Wie kann ich mehrere WordPress -Sites in Docker -Containern verwalten? Sie können auch Docker -Netzwerke verwenden, um den Netzwerkverkehr jeder Website zu isolieren. Wenn Sie einen Reverse -Proxy wie Nginx verwenden, können Sie ihn basierend auf dem Domänennamen an den entsprechenden Container konfigurieren.

Um Ihre WordPress -Site in einem Docker -Container zu aktualisieren, können Sie das neueste WordPress -Bild aus dem Docker -Hub ziehen, Ihren laufenden Container stoppen und ein neues mithilfe des aktualisierten Bildes starten. Denken Sie daran, Ihre Daten vor dem Aktualisieren zu sichern. Sie können den Befehl "Docker -Statistiken" verwenden, um die Ressourcenverwendung Ihrer Container zu überwachen. Sie können auch Tools wie Prometheus und Grafana verwenden, um Metriken aus Ihren Containern zu sammeln und zu visualisieren. Als Docker -Container müssen Sie Ihre WordPress -Dateien und -Datenbank sichern, eine Dockerfile erstellen und eine Docker -Komponierungsdatei, um Ihre WordPress- und Datenbankdienste zu definieren, Ihre Docker -Bilder zu erstellen und Ihre Container zu starten. Denken Sie daran, Ihre WordPress -Konfiguration zu aktualisieren, um auf den neuen Datenbankdienst zu verweisen.

Das obige ist der detaillierte Inhalt vonWie man Docker -Container für WordPress manuell erstellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn