Maison > Opération et maintenance > Nginx > le corps du texte

Comment utiliser Docker pour créer un environnement php+nginx+swoole+mysql+redis

WBOY
Libérer: 2023-05-28 11:23:49
avant
1557 Les gens l'ont consulté

1. Créez une image docker avec l'extension swoole-redis-pdo_mysql-gd

1 Créez un fichier docker

vim dockerfile
Copier après la connexion

2 Écrivez dans le fichier docker

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
Copier après la connexion

3. le dernier '.' consiste à spécifier le répertoire actuel pour construire l'image

docker build -t myphp4 .
Copier après la connexion

Exécutez la commande En raison de problèmes de réseau, etc., vous devez attendre longtemps. Après le succès, un code similaire à celui-ci apparaîtra

.

...
processus de construction terminé avec succès
installation de '/usr/local/include/php/ext/swoole/config.h'
installation de '/usr/local/lib/php/extensions/no-debug-non- zts-20160303/swoole.so'
installation ok : canal://pecl.php.net/swoole-4.3.1
l'option de configuration "php_ini" n'est pas définie sur l'emplacement php.ini
vous devez ajouter "extension=swoole. so" vers php.ini
suppression du conteneur intermédiaire ad1420f7554f
---> 2f2f332d73ce
construit avec succès 2f2f332d73ce
marqué avec succès myphp4:latest

Jusqu'à présent, l'image myphp4 personnalisée de Docker a été créée avec succès !

2. Créez le fichier docker-compose.yml

mkdir pnsmr
cd pnsmr
vim docker-compose.yml
Copier après la connexion

Écrivez le code suivant

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"
Copier après la connexion

Exécutez la commande

docker-compose up -d
Copier après la connexion

Vous pouvez voir si elle réussit

avertissement : le moteur Docker que vous utilisez est exécuté en mode essaim.

compose n'utilise pas le mode essaim pour déployer des services sur plusieurs nœuds dans un essaim, tous les conteneurs seront planifiés sur le nœud actuel.

pour déployer votre application sur l'essaim, utilisez `docker stack déployer`.

création du réseau "pnsmr_default" avec le pilote par défaut
création de pnsmr_php-fm_1 ... terminé
création de pnsmr_redis_1 ... Terminé
création de pnsmr_Mysql_1 ... Terminé
création de pnsmr_nginx_1 ... don À ce stade, le service Nginx MySQL Redis Php a été ouvert

3. Modifiez chaque fichier de configuration de service

1 Entrez 127.0.0.1:9998 dans le navigateur #L'adresse IP de votre serveur doit être saisie ici, vous pouvez voir l'image ci-dessous

Comment utiliser Docker pour créer un environnement php+nginx+swoole+mysql+redis 2. Ensuite, vous devez modifier Pour le fichier de configuration nginx dans le conteneur, utilisez d'abord la commande pour afficher l'adresse IP docker de chaque conteneur

docker inspect -f '{{.name}} - {{range .networksettings.networks}}{{.ipaddress}}{{end}}' $(docker ps -aq)
Copier après la connexion

Cette commande peut afficher les adresses IP de tous les conteneurs ouverts avec docker-compose. le résultat est similaire à l'image ci-dessous. Vous pouvez utiliser l'adresse IP correspondante pour la communication interne

3 Copiez le fichier de configuration du conteneur nginx, puis modifiez-le et remplacez-le afin que nginx puisse analyser phpComment utiliser Docker pour créer un environnement php+nginx+swoole+mysql+redis

docker cp pnsmr_nginx_1:/etc/nginx/conf.d/default.conf nginx.conf
vim nginx.conf
Copier après la connexion

Modifiez-le. au code suivant

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
Copier après la connexion

Visitez 127.0.0.1:9998, le fichier html est analysé normalement

Comment utiliser Docker pour créer un environnement php+nginx+swoole+mysql+redis Visitez 127.0.0.1:9998/index.php, l'analyse du fichier PHP est normale

Comment utiliser Docker pour créer un environnement php+nginx+swoole+mysql+redis4. Testez mysql, redis est efficace

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;);
Copier après la connexion

Visitez 127.0.0.1:9998/redis.php, redis a pris effet

Entrez le conteneur mysqlComment utiliser Docker pour créer un environnement php+nginx+swoole+mysql+redis

docker exec -it pnsmr_mysql_1 bash
Copier après la connexion

Entrez mysql et changez le mot de passe de l'utilisateur root

Créer un fichier de testComment utiliser Docker pour créer un environnement php+nginx+swoole+mysql+redis

vim /var/www/html/mysql.php
<?php
$pdo = new pdo(&#39;mysql:host=172.24.0.2;dbname=mysql;port=3306&#39;,&#39;root&#39;,&#39;root123&#39;);
var_dump($pdo);
Copier après la connexion
Visitez 127.0.0.1:9998/mysql.php, mysql a pris effet

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!