Rumah >Operasi dan penyelenggaraan >Nginx >Cara menggunakan docker untuk membina persekitaran php+nginx+swoole+mysql+redis
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
2. Cipta fail docker-compose.yml...
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!
mkdir pnsmr cd pnsmr vim docker-compose.yml
Tulis kod berikutversion: '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.3. Ubah suai setiap fail konfigurasi perkhidmatanuntuk menggunakan aplikasi anda merentasi kumpulan, gunakan `docker stack deploy`.
mewujudkan rangkaian "pnsmr_default" dengan pemacu lalai
membuat pnsmr_php- fpm_1 ... selesaimembuat pnsmr_redis_1 ... selesai
membuat pnsmr_mysql_1 ... selesaimembuat pnsmr_nginx_1 ... selesai
Pada ketika ini, nginx php mysql redis perkhidmatan telah dimulakan
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
docker inspect -f '{{.name}} - {{range .networksettings.networks}}{{.ipaddress}}{{end}}' $(docker ps -aq)
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
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 文件,输出helloworldAkses 127.0.0.1:9998, fail html dihuraikan seperti biasa Akses 127.0.0.1:9998/index.php Fail php dihuraikan seperti biasa
vim /var/www/html/redis.php #用于测试redis是否配置成功 <?php $redis = new redis(); $redis->connect("172.24.0.4",6379); $redis->set('test','this is a test for redis'); echo $redis->get('test');Akses 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
Buat fail ujian
vim /var/www/html/mysql.php <?php $pdo = new pdo('mysql:host=172.24.0.2;dbname=mysql;port=3306','root','root123'); var_dump($pdo);
Akses 127.0.0.1:9998/mysql.php, mysql telah berkuat kuasa
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!