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

WBOY
Lepaskan: 2023-05-28 11:23:49
ke hadapan
1501 orang telah melayarinya

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

1. Buat fail docker

vim dockerfile
Salin selepas log masuk

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
Salin selepas log masuk

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

docker build -t myphp4 .
Salin selepas log masuk

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
Salin selepas log masuk

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"
Salin selepas log masuk
Jalankan arahan

docker-compose up -d
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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;);
Salin selepas log masuk
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
Salin selepas log masuk

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);
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!