Betriebssystem: Alibaba Cloud ESC-Instanz centos7.4 Software: Docker-CE Version 18.09.3, Docker-Compose Version 1.23.2 1. Erstellen Sie ein Docker-Image mit der Erweiterung swoole-redis-pdo_mysql-gd 1. Erstellen Sie ein Dockerfile vim Dockerdatei 2. Schreiben Sie in die Dockerfile-Datei Von php:7.1-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-configure pdo_mysql \ && docker-php-ext-install pdo_mysql \ && pecl installiere redis-4.3.0 \ && pecl installiere swoole \ && Docker-PHP-Ext-Aktivieren von Redis Swoole 3. Erstellen Sie ein benutzerdefiniertes PHP-Image. Vergessen Sie nicht den letzten '.', der das aktuelle Verzeichnis zum Erstellen des Images angibt. docker build -t myphp4. Führen Sie den Befehl aus. Aufgrund von Netzwerkproblemen dauert die Ausführung lange. Nach erfolgreichem Abschluss wird ein ähnlicher Code wie der folgende angezeigt.
An diesem Punkt wurde das benutzerdefinierte myphp4-Image von Docker erfolgreich erstellt! 2. Erstellen Sie eine docker-compose.yml-Datei mkdir pnsmr CD PNSMR vim docker-compose.yml Schreiben Sie den folgenden Code Version: '3.0' Leistungen: nginx: Bild: „nginx:latest“ Häfen: - "10000:80" Bände: – /var/www/html:/usr/share/nginx/html php-fpm: Bild: "myphp4" Bände: – /var/www/html:/usr/share/nginx/html MySQL: Bild: "mysql:latest" Redis: Bild: "redis:4.0" Anweisungen ausführen docker-compose up -d Der Erfolg kann sich sehen lassen
Bisher wurde der Nginx MySQL Redis PHP-Dienst gestartet 3. Ändern Sie jede Dienstkonfigurationsdatei 1. Geben Sie 127.0.0.1:9998 in den Browser ein. #Hier sollten Sie die IP-Adresse Ihres Servers eingeben. Anschließend sehen Sie das folgende Bild 2. Ändern Sie als Nächstes die Nginx-Konfigurationsdatei im Container. Verwenden Sie zunächst den Befehl, um die Docker-IP-Adresse jedes Containers anzuzeigen docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) Mit diesem Befehl können die IP-Adressen aller mit Docker-Compose geöffneten Container angezeigt werden. Das Ergebnis ähnelt der folgenden Abbildung. Die entsprechenden IP-Adressen können für die interne Kommunikation verwendet werden. 3. Kopieren Sie die Konfigurationsdatei des Nginx-Containers und ändern Sie sie, damit Nginx PHP analysieren kann. docker cp pnsmr_nginx_1:/etc/nginx/conf.d/default.conf nginx.conf vim nginx.conf Ändern Sie den Code in den folgenden Server { hören Sie 80; Servername localhost; #Zeichensatz koi8-r; #access_log /var/log/nginx/host.access.log main; Standort / { root /usr/share/nginx/html; Index Index.html Index.htm; } #Fehlerseite 404 /404.html; # Server-Fehlerseiten auf die statische Seite /50x.html umleiten # Fehlerseite 500 502 503 504 /50x.html; Standort = /50x.html { root /usr/share/nginx/html; } # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht # #Standort ~ \.php$ { # Proxy-Passwort http://127.0.0.1; #} # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht. # Standort ~ \.php$ { Stamm-HTML; fastcgi_pass 172.24.0.3:9000;#Hier müssen Sie die interne Docker-Kommunikations-IP Ihres PHP-Containers eingeben fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name; fastcgi_params einschließen; } # Zugriff auf .htaccess-Dateien verweigern, wenn das Apache-Dokumentenstammverzeichnis # stimmt mit nginx überein # #Standort ~ /\.ht { # alles ablehnen; #} } docker cp nginx.conf pnsmr_nginx_1:/etc/nginx/conf.d/default.conf #Kopieren Sie die geänderte Konfigurationsdatei in den Container docker container stop pnsmr_nginx_1 Docker-Container starten pnsmr_nginx_1 #Starten Sie den Nginx-Container neu, damit die Konfigurationsdatei wirksam wird vim /var/www/html/index.php #Erstellen Sie eine neue Datei index.php im lokalen Verzeichnis des Servers, geben Sie <?php phpinfo(); ein und speichern Sie sie vim /var/www/html/index.html #Erstellen Sie eine neue Datei index.html im lokalen Verzeichnis des Servers und geben Sie „hallowelt“ aus Access 127.0.0.1:9998, HTML-Dateianalyse ist normal Zugriff auf 127.0.0.1:9998/index.php, PHP-Dateianalyse ist normal 4. Testen Sie, ob MySQL und Redis effektiv sind vim /var/www/html/redis.php #Wird verwendet, um zu testen, ob Redis erfolgreich konfiguriert ist<?php $redis = neues Redis(); $redis->connect("172.24.0.4",6379); $redis->set('test','dies ist ein Test für Redis'); echo $redis->get('test'); Besuchen Sie 127.0.0.1:9998/redis.php, Redis ist wirksam geworden Geben Sie den MySQL-Container ein docker exec -it pnsmr_mysql_1 bash Geben Sie mysql ein und ändern Sie das Root-Benutzerkennwort Erstellen einer Testdatei vim /var/www/html/mysql.php <?php $pdo = neues PDO('mysql:host=172.24.0.2;dbname=mysql;port=3306','root','root123'); var_dump($pdo); Zugriff auf 127.0.0.1:9998/mysql.php, mysql ist wirksam IV. Fazit Obwohl die Umgebung erfolgreich konfiguriert ist und mit dem Befehl „docker-compose up“ mit einem Klick generiert werden kann, müssen die Konfigurationsdateien jedes Containers noch geändert werden, was immer noch nicht bequem genug ist und optimiert werden muss. Darüber hinaus werden die Cluster- und Stapelfunktionen von Docker nicht verwendet, was später untersucht wird. 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:
|
<<: MySQL-Optimierungszusammenfassung – Gesamtzahl der Abfrageeinträge
>>: js+Html zur Realisierung einer Tabellenbearbeitungsoperation
Die CSS-Animation des rotierenden Flip-Effekts, d...
Erstellen Sie in MySQL eine Ansicht für zwei oder...
Um Kernelmodule in CentOS automatisch zu laden, k...
Inhaltsverzeichnis 1. Benutzerdefiniertes Routing...
Inhaltsverzeichnis 1. MySQL-Zeittyp 2. Überprüfen...
Hintergrund Das Agile-Modell wird häufig verwende...
Wenn die oben genannten Einstellungen in IE8 und C...
Die unten zusammengefassten Wissenspunkte werden ...
In diesem Artikel wird der spezifische JavaScript...
1. Einleitung Zunächst müssen wir eine Frage bean...
Vorwort: MySQL ist ein relationales Datenbankverw...
In diesem Artikelbeispiel wird der spezifische Co...
MySQL und verbindungsbezogene Timeouts Vorwort: H...
Canvas ist ein neues Tag in HTML5. Sie können js ...
1. Nachfrage Wir haben drei Tabellen. Wir müssen ...