So stellen Sie LNMP und phpMyAdmin in Docker bereit

So stellen Sie LNMP und phpMyAdmin in Docker bereit

Umweltvorbereitung:

Stellen Sie lnmp auf einem Host bereit, der auf mehreren Containern basiert:
Nginx-Dienst: 172.16.10.10
MySQL-Dienst:172.16.10.20
PHP-Dienst:172.16.10.30

Lösen Sie das Problem der festen Container-IP-Adresse:

Hinweis: Wenn der Container gestoppt oder gelöscht wird und derselbe Container erneut ausgeführt wird, ist seine IP-Adresse nicht mehr die ursprüngliche Adresse. Daher müssen wir ein Netzwerksegment anpassen, um die IP-Adresse des Containers anzugeben.

Projektabwicklung:

(1) Passen Sie zunächst ein Netzwerk an:

[root@sqm-docker01 ~]# Docker-Netzwerk erstellen -d Bridge --Subnetz 172.16.10.0/24 --Gateway 172.16.10.1 mynet1

(2) Laden Sie das Image nginx, php:fpm, mysql-5.7 herunter:

[root@sqm-docker01 ~]# Docker zieht nginx 
[root@sqm-docker01 ~]# docker pull php:7.2-fpm <!--Verwende das Image von php:7.2-fpm-->
[root@sqm-docker01 ~]# docker pull mysql:5.7 <!--Verwende das Image von mysql:5.7--> 

(3)####Führen Sie einen Container basierend auf dem Nginx-Image aus#####

#Führen Sie zuerst den Nginx-Dienst aus, um die Nginx-Konfigurationsdatei zu kopieren:

Parametererklärung:

  • ausführen: Einen neuen Container erstellen
  • -d: Im Hintergrund ausführen
  • --name: Benutzerdefinierter Name ist test1

Erstellen Sie auf dem Host ein Verzeichnis, in dem Sie die Dateien mounten möchten:

Hauptverzeichnis der Website: /wwwroot;

nginx-Konfigurationsdatei: /docker;

[root@sqm-docker01 ~]# mkdir /wwwroot
[root@sqm-docker01 ~]# mkdir /docker

##Verwenden Sie den Befehl Docker cp, um das Verzeichnis, in dem die Nginx-Konfigurationsdateien gespeichert sind, auf den lokalen Computer zu kopieren.

Hinweis: Der Befehl „Docker cp“ kann Dateien vom Host in den Container kopieren oder Dateien oder Verzeichnisse im Container auf den lokalen Computer kopieren.

[root@sqm-docker01 ~]# docker cp test1:/etc/nginx /docker/ #Verwenden Sie Docker cp, um das Verzeichnis, in dem die Nginx-Konfigurationsdateien gespeichert sind, auf den Host zu kopieren .

[root@sqm-docker01 ~]# ls /docker/nginx/conf.d/ 

Datei default.conf

#注意:需要修改的是nginx conf.d目錄下的default.conf文件,而不是nginx.conf 文件。

Kopieren Sie das Nginx-Webverzeichnis:

[root@sqm-docker01 ~]# docker cp test1:/usr/share/nginx/html /wwwroot/
[root@sqm-docker01 ~]# ls /wwwroot/html/
50x.html index.html

Ändern Sie die Standard-Testwebseite von nginx:

[root@sqm-docker01 html]# echo "<h1>Hallo, willkommen im Nginx-Web</h1>" > index.html 


(4) Führen Sie den Nginx-Container aus:

Mounten Sie die Verzeichnisse im Container in das lokale Verzeichnis und geben Sie die IP-Adresse an

[root@sqm-docker01 ~]# docker run -itd --name nginx --network my_net1 --ip 172.16.10.10 -p 80:80 -v /docker/nginx:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html nginx:latest

Parametererklärung:

  • run: Einen Container ausführen
  • -itd: i: interaktiv
  • t: Pseudoterminal
  • d: Den Container im Hintergrund laufen lassen
  • --network: Basierend auf der Netzwerkkarte, mit der das Netzwerk erstellt werden soll
  • --ip: definiert die IP-Adresse des Containers
  • -v = --volume Datenvolumen, führe eine Einbindung durch
  • Mount-Format: Host: Im Container
  • p: zugeordneter Port, Host-Port: Port im Container

(5) Führen Sie den MySQL-Container aus:

[root@sqm-docker01 ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123.com -d -p 3306:3306 --network my_net1 --ip 172.16.10.20 mysql:5.7
-e dient zum Festlegen der Umgebungsvariable im Container. Wir legen die Umgebungsvariable mysql password fest, die an den Container übergeben wird, um das mysql password festzulegen

Testen Sie, ob sich der Root-Benutzer auf diesem Computer bei MySQL anmelden kann:

Zuerst müssen Sie den MySQL-Client herunterladen:

[root@sqm-docker01 ~]# yum -y installiere mysql 

(6) Führen Sie den PHP-Container aus:

[root@sqm-docker01 ~]# docker run -itd -p 9000:9000 --name phpfpm -v /wwwroot/html:/usr/share/nginx/html --network my_net1 --ip 172.16.10.30 php:7.2-fpm

Beachten:
Stellen Sie sicher, dass nginx und PHP ein Verzeichnis zum Speichern von Webseiten gemeinsam nutzen und dass PHP dasselbe Standard-Webstammverzeichnis erstellt wie nginx (wenn -v gemountet ist und das Verzeichnis im Container nicht vorhanden ist, wird es automatisch erstellt).

(7) Konfigurieren Sie nginx und php-fpm:

Wir müssen PHP zum Parsen von nginx konfigurieren:

Erstellen Sie eine einfache Test-Webseite:

Als nächstes müssen Sie die Nginx-Konfigurationsdatei ändern:

[root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf 


(8) Konfigurieren Sie MySQL:

Einrichten von phpMyadmin:

phpMyAdmin ist ein PHP-basiertes, webbasiertes MySQL-Datenbankverwaltungstool auf einem Website-Host, das Administratoren die Verwaltung von MySQL-Datenbanken über eine Weboberfläche ermöglicht. Diese Weboberfläche kann eine bessere Möglichkeit sein, komplexe SQL-Syntax auf einfache Weise einzugeben, insbesondere für den Import und Export großer Datenmengen. Einer der größten Vorteile besteht darin, dass phpMyAdmin wie andere PHP-Programme auf einem Webserver ausgeführt wird, sodass Sie die von diesen Programmen generierten HTML-Seiten überall verwenden können, d. h. MySQL-Datenbanken remote verwalten und Datenbanken und Tabellen einfach erstellen, ändern und löschen können.
[root@sqm-docker01 html]# pwd
/wwwroot/html

In das aktuelle Verzeichnis entpacken:

[root@sqm-docker01 html]# entpacken Sie phpMyAdmin-4.9.1-all-languages.zip

Umbenennen:

[root@sqm-docker01 html]# mv phpMyAdmin-4.9.1-alle-Sprachen ​​​​phpmyadmin

Ändern Sie die Nginx-Konfigurationsdatei – konfigurieren Sie die Verbindung mit phpMyAdmin:

[root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf 

Kopieren Sie das ursprüngliche Standortkonfigurationselement und fügen Sie die folgenden beiden Standortkonfigurationsabschnitte hinzu.

Starten Sie nginx neu, nachdem Sie die nginx-Konfigurationsdatei geändert haben:

Besuchen Sie die Testwebseite:

Der Port im Container wurde dem Host zugeordnet, greifen Sie also direkt auf die Hostadresse zu: 172.16.1.30

Greifen Sie auf PHP zu, um die Nginx-Webseite zu analysieren:

Testen Sie als Nächstes die Anmeldung bei phpMyAdmin:

Besuchen Sie die URL : http://172.16.1.30/phpmyadmin/index.php

Das MySQLI-Modul fehlt, deshalb kann nicht darauf zugegriffen werden. Sie müssen also PHP hinzufügen, um das MySQL-Konfigurationsmodul zu unterstützen:

So fügen Sie dem Container Erweiterungsmodule hinzu: Wir können uns bei Dockerhub anmelden, um die relevanten Dokumente abzufragen:

Linkpfad: https://hub.docker.com/


Kopieren Sie das obige Dockerfile-Skript und installieren Sie es lokal:

Beachten Sie, dass einige zusätzliche Inhalte hinzugefügt werden müssen:

[root@sqm-docker01 ~]# vim Docker-Datei
VON php:7.2-fpm
Führen Sie apt-get update && apt-get install -y \ aus.
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
  && docker-php-ext-install -j$(nproc) iconv \
  && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
  && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install mysqli pdo pdo_mysql

Dockerfile erstellen:

[root@sqm-docker01 ~]# docker build -t phpfpm-mysqli .

Parametererklärung:

  • bauen: Bauen
  • -t: Geben Sie das Tag an
  • . zeigt das Dockerfile im aktuellen Verzeichnis an

Nachdem der Build abgeschlossen ist, löschen Sie das ursprüngliche PHP-Image und führen Sie das Image aus, das gerade erfolgreich erstellt wurde und das MySQLI-Modul unterstützt:

[root@sqm-docker01 ~]# Docker stoppt phpfpm 
phppfpm
[root@sqm-docker01 ~]# docker rm phpfpm 
phppfpm
[root@sqm-docker01 ~]# docker run --name phpfpm -d -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network my_net1 --ip 172.16.10.30 phpfpm-mysqli:latest

#Mirror gibt den Image-Namen an, der von der gerade erstellten Docker-Datei generiert wurde.

Ändern Sie das Standardbeispiel (Beispieldatei) von phpMyAdmin:

Wenn Sie es in der Konfigurationsdatei verwenden möchten, müssen Sie es umbenennen und das Beispiel entfernen.

[root@sqm-docker01 phpmyadmin]# pwd
/wwwroot/html/phpmyadmin
[root@sqm-docker01 phpmyadmin]# cp config.sample.inc.php config.inc.php

Ändern Sie die Konfigurationsdatei:

[root@sqm-docker01 phpmyadmin]# vim config.inc.php 

Starten Sie PHP nach der Änderung der Konfigurationsdatei neu:

[root@sqm-docker01 phpmyadmin]# docker restart phpfpm 
phppfpm

Greifen Sie auf die phpMyAdmin-Webseite zu:

Geben Sie die URL ein: http://172.16.1.30/phpmyadmin/index.php

#Benutzername und Passwort sind das Login-Passwort der Datenbank

Auf die MySQL-Datenbank wurde erfolgreich zugegriffen. . . . . .

An diesem Punkt ist die Bereitstellung von lnmp zwischen mehreren Containern in Docker abgeschlossen.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So konfigurieren Sie die PHP-Entwicklungsumgebung über Docker auf dem Mac
  • Docker-Installation von PHP und Bereitstellungsbeispiel mit Nginx
  • Erläuterung der Schritte zur Installation der PHP-Erweiterung in Docker
  • So verwenden Sie Docker zum Erstellen einer einheitlichen OpenLDAP+phpLDAPadmin-Benutzerauthentifizierung
  • Detaillierte Erläuterung des Tutorials zum Erstellen einer PHP-Umgebung für Docker
  • Detailliertes Tutorial zur Installation des PHP-FPM-Dienstes/der PHP-FPM-Erweiterung/-Konfiguration in Docker
  • Dockers flexible Implementierung zum Aufbau einer PHP-Umgebung
  • PHP verwendet Docker, um Workerman-Fallerklärung auszuführen

<<:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15 unter Win10

>>:  Eine kurze Diskussion über die Verwendung der Web Storage API

Artikel empfehlen

Containerisierungstransformation für Docker-Großprojekte

Virtualisierung und Containerisierung sind zwei u...

Implementierung von Wasserfall-Layout + dynamischem Rendering

Inhaltsverzeichnis Typische Wasserfall-Website Wa...

So verwenden Sie wangEditor in Vue und erhalten durch Echo von Daten den Fokus

Bei der Hintergrundverwaltung von Projekten werde...

Ausführliche Erläuterung der Stilfunktion in Vue3-Einzeldateikomponenten

Inhaltsverzeichnis Stil mit Gültigkeitsbereich St...

So ändern Sie die Gruppe, zu der ein Benutzer in Linux gehört

Ändern Sie die Gruppe, zu der ein Benutzer in Lin...

Viewport-Parameter für mobile Browser (Web-Frontend-Design)

Mobile Browser platzieren Webseiten in einem virtu...

Erfahrungsaustausch zur Optimierung von MySQL-Big-Data-Abfragen (empfohlen)

Ernsthafte MySQL-Optimierung! Wenn die MySQL-Date...

Analyse des Prinzips und der Erstellungsmethode der temporären MySQL-Tabelle

In diesem Artikel werden hauptsächlich das Prinzi...

So konfigurieren Sie mehrere Projekte mit demselben Domänennamen in Nginx

Es gibt zwei Möglichkeiten, mit Nginx mehrere Pro...

So verwenden Sie Spark und Scala zum Analysieren von Apache-Zugriffsprotokollen

Installieren Zuerst müssen Sie Java und Scala ins...

So installieren Sie pyenv unter Linux

Voraussetzungen Git muss installiert werden Insta...