Heim >Betrieb und Instandhaltung >Nginx >So erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung

So erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung

WBOY
WBOYnach vorne
2023-05-28 11:23:491575Durchsuche

1. Erstellen Sie ein Docker-Image mit der Erweiterung swoole-redis-pdo_mysql-gd

1. Erstellen Sie eine Dockerfile-Datei

vim dockerfile

2. Schreiben Sie

from php:7.1-fpm
run apt-get update && apt-get install -y \
  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 install redis-4.3.0 \
&& pecl install swoole \
&& docker-php-ext-enable redis swoole

in die Dockerfile-Datei. 3. Erstellen Sie ein benutzerdefiniertes PHP-Image. Die Hauptsache ist, das letzte „.“ nicht zu verpassen, nämlich das aktuelle Verzeichnis zum Erstellen des Images anzugeben.

docker build -t myphp4 .

Führen Sie den Befehl aufgrund von Netzwerkproblemen usw. aus. Nach dem Erfolg wird ein Code ähnlich dem folgenden angezeigt. 🎜🎜#...

Build-Prozess erfolgreich abgeschlossen
Installation von '/usr/local/include/php/ext/swoole/config.h'

Installation von '/usr/local/lib/ php/extensions/no-debug-non-zts-20160303/swoole.so'
install ok:channel://pecl.php.net/swoole-4.3.1
Konfigurationsoption „php_ini“ ist nicht auf php.ini-Speicherort festgelegt
Sie sollten „extension=swoole .so“ zu php.ini hinzufügen
Zwischencontainer ad1420f7554f entfernen
---> 2f2f332d73ce
erfolgreich erstellt 2f2f332d73ce
myphp4 erfolgreich getaggt:latest

# 🎜🎜#Bisher wurde das benutzerdefinierte myphp4-Image von Docker erfolgreich erstellt!

2. Docker-compose.yml-Datei erstellen

mkdir pnsmr
cd pnsmr
vim docker-compose.yml

Folgenden Code schreiben

version: '3.0'
services:
nginx:
  image: "nginx:latest"
  ports:
   - "10000:80"
  volumes:
   - /var/www/html:/usr/share/nginx/html
php-fpm:
  image: "myphp4"
  volumes:
  - /var/www/html:/usr/share/nginx/html
mysql:
  image: "mysql:latest"
redis:
  image: "redis:4.0"
Befehl ausführen# 🎜🎜#
docker-compose up -d

Erfolg kann sich sehen lassen

Warnung: Die von Ihnen verwendete Docker-Engine läuft im Schwarmmodus.

compose nicht Verwenden Sie den Schwarmmodus, um Dienste auf mehreren Knoten in einem Schwarm bereitzustellen.

Um Ihre Anwendung im Schwarm bereitzustellen, verwenden Sie „Docker Stack Deploy“.

Netzwerk „pnsmr_default“ mit dem Standardtreiber erstellen

pnsmr_php-fpm_1 erstellen ... fertig

pnsmr_redis_1 erstellen ... fertig

pnsmr_mysql_1 erstellen ... fertig

erstellen pnsmr_nginx_1 ... fertig



Zu diesem Zeitpunkt 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 sollte Ihre Server-IP-Adresse eingegeben werden, Sie können das Bild unten sehen

# 🎜🎜#
2 Als nächstes müssen Sie die Nginx-Konfigurationsdatei im Container ändern. 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)

Dieser Befehl kann alle Docker-Container anzeigen. Das Ergebnis ähnelt dem Bild unten. Sie können die entsprechende IP-Adresse für die interne Kommunikation verwenden. 🎜🎜#

3. Kopieren Sie die Konfigurationsdatei des Nginx-Containers. Kommen Sie heraus und ändern und ersetzen Sie sie, damit Nginx PHP analysieren kann

docker cp pnsmr_nginx_1:/etc/nginx/conf.d/default.conf nginx.conf
vim nginx.conf
So erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-UmgebungÄndern Sie den folgenden Code#🎜🎜 #
server {
  listen    80;
  server_name localhost;

  #charset koi8-r;
  #access_log /var/log/nginx/host.access.log main;

  location / {
    root  /usr/share/nginx/html;
    index index.html index.htm;
  }

  #error_page 404       /404.html;

  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  /usr/share/nginx/html;
  }

  # proxy the php scripts to apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #  proxy_pass  http://127.0.0.1;
  #}

  # pass the php scripts to fastcgi server listening on 127.0.0.1:9000
  #
  location ~ \.php$ {
    root      html;
    fastcgi_pass  172.24.0.3:9000;#此处需要填写你的php容器的docker内部通讯ip
    fastcgi_index index.php;
    fastcgi_param script_filename /usr/share/nginx/html/$fastcgi_script_name;
    include    fastcgi_params;
  }

  # deny access to .htaccess files, if apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}
docker cp nginx.conf pnsmr_nginx_1:/etc/nginx/conf.d/default.conf #将修改好的配置文件拷贝到容器里
docker container stop pnsmr_nginx_1 
docker container start pnsmr_nginx_1 #重启nginx容器使配置文件生效
vim /var/www/html/index.php #在服务器本地目录新建 index.php 文件,输入<?php phpinfo(); 并保存
vim /var/www/html/index.html #在服务器本地目录新建 index.html 文件,输出helloworld

Visit 127.0.0.1:9998, die HTML-Datei wird normal analysiert

#🎜 🎜#

Visit. 127.0.0.1:999 8/ index.php, die PHP-Datei wird normal analysiert 🎜#Besuchen Sie 127.0.0.1:9998/redis.php, Redis ist wirksam.

So erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung

Geben Sie den MySQL-Container ein mysql und ändern Sie das Root-Benutzerkennwort

Erstellen Sie eine Testdatei So erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung

vim /var/www/html/redis.php #用于测试redis是否配置成功
<?php
$redis = new redis();
$redis->connect("172.24.0.4",6379);
$redis->set(&#39;test&#39;,&#39;this is a test for redis&#39;);
echo $redis->get(&#39;test&#39;);

Zugriff auf 127.0.0.1:9998/mysql.php , MySQL ist in Kraft getreten

Das obige ist der detaillierte Inhalt vonSo erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen