Rumah >Operasi dan penyelenggaraan >Nginx >Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis

Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis

WBOY
WBOYke hadapan
2023-05-28 11:23:491608semak imbas

1. Cipta imej docker dengan sambungan swoole-redis-pdo_mysql-gd

1. Buat fail docker

vim dockerfile

2

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

3. Cipta imej php tersuai Perkara utama ialah jangan terlepas '.' yang terakhir, iaitu untuk menentukan direktori semasa untuk membina imej

docker build -t myphp4 .

Jalankan arahan . Disebabkan masalah rangkaian, dsb., anda perlu menunggu untuk perbandingan Selepas masa yang lama, kod seperti berikut akan muncul selepas kejayaan

...
proses binaan selesai dengan jayanya. 🎜>memasang '/usr/local/include/php/ext/swoole/config .h'
memasang '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/swoole.so '
pasang ok: channel://pecl.php.net/swoole -4.3.1
pilihan konfigurasi "php_ini" tidak ditetapkan kepada lokasi php.ini
anda harus menambah "extension=swoole.so " untuk php.ini
mengalih keluar bekas perantaraan ad1420f7554f
--- > 2f2f332d73ce
berjaya membina 2f2f332d73ce
berjaya menandakan myphp4:🎜🎜 tersuai saya:🎜 kini berjaya dibuat!

2. Cipta fail docker-compose.yml

mkdir pnsmr
cd pnsmr
vim docker-compose.yml

Tulis kod berikut

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"
Jalankan arahan

docker-compose up -d

Berjaya Lihat

amaran: enjin docker yang anda gunakan sedang berjalan dalam mod swarm.

compose tidak menggunakan mod swarm untuk menggunakan perkhidmatan kepada berbilang nod dalam semua bekas akan dijadualkan pada nod semasa.

untuk menggunakan aplikasi anda merentasi kumpulan, gunakan `docker stack deploy`.

mewujudkan rangkaian "pnsmr_default" dengan pemacu lalai

membuat pnsmr_php- fpm_1 ... selesai

membuat pnsmr_redis_1 ... selesai

membuat pnsmr_mysql_1 ... selesai

membuat pnsmr_nginx_1 ... selesai


Pada ketika ini, nginx php mysql redis perkhidmatan telah dimulakan

3. Ubah suai setiap fail konfigurasi perkhidmatan

1 Masukkan 127.0.0.1:9998 dalam penyemak imbas #Anda harus memasukkan IP pelayan anda alamat di sini, anda boleh Lihat gambar di bawah

2 Seterusnya, anda perlu mengubah suai fail konfigurasi nginx dalam bekas alamat ip docker bagi setiap bekas Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis

docker inspect -f '{{.name}} - {{range .networksettings.networks}}{{.ipaddress}}{{end}}' $(docker ps -aq)

Arahan ini boleh melihat alamat IP semua bekas yang dibuka dengan docker-compose Hasilnya adalah serupa dengan gambar di bawah Anda boleh menggunakan alamat IP yang sepadan untuk komunikasi dalaman >

3. Salin nginx Keluarkan fail konfigurasi bekas dan ubah suai dan gantikannya supaya nginx boleh menghuraikan php

docker cp pnsmr_nginx_1:/etc/nginx/conf.d/default.conf nginx.conf
vim nginx.conf

dan ubah suainya kepada kod berikut Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis

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

Akses 127.0.0.1:9998, fail html dihuraikan seperti biasa

Akses 127.0.0.1:9998/index.php Fail php dihuraikan seperti biasa

Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis

4. Uji mysql, Adakah redis sah

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;);
Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redisAkses 127.0.0.1:9998/redis.php, redis adalah sah

Masukkan bekas mysql

docker exec -it pnsmr_mysql_1 bash

Masukkan mysql dan tukar kata laluan pengguna root Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis

Buat fail ujian

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);

Akses 127.0.0.1:9998/mysql.php, mysql telah berkuat kuasa Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis

Atas ialah kandungan terperinci Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam