怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

一.創(chuàng)建帶有swoole-redis-pdo_mysql-gd擴(kuò)展的docker image

1.創(chuàng)建dockerfile文件

vim?dockerfile

2.在dockerfile文件寫(xiě)入

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.創(chuàng)建自定義的php鏡像,主要不要漏了最后的 ‘.’,是指定當(dāng)前目錄構(gòu)建鏡像

docker?build?-t?myphp4?.

運(yùn)行指令,由于網(wǎng)絡(luò)問(wèn)題等,需要等比較長(zhǎng)的時(shí)間,成功后會(huì)出現(xiàn)類(lèi)似下面的代碼


build process completed successfully
installing ‘/usr/local/include/php/ext/swoole/config.h’
installing ‘/usr/local/lib/php/extensions/no-debug-non-zts-20160303/swoole.so’
install ok: channel://pecl.php.net/swoole-4.3.1
configuration option “php_ini” is not set to php.ini location
you should add “extension=swoole.so” to php.ini
removing intermediate container ad1420f7554f
—> 2f2f332d73ce
successfully built 2f2f332d73ce
successfully tagged myphp4:latest

至此docker 的自定義myphp4 image創(chuàng)建成功!

二.創(chuàng)建docker-compose.yml文件

mkdir?pnsmr cd?pnsmr vim?docker-compose.yml

寫(xiě)入下面代碼

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"

運(yùn)行指令

docker-compose?up?-d

成功可以看到

warning: the docker engine you’re using is running in swarm mode.

compose does not use swarm mode to deploy services to multiple nodes in a swarm. all containers will be scheduled on the current node.

to deploy your application across the swarm, use `docker stack deploy`.

creating network “pnsmr_default” with the default driver
creating pnsmr_php-fpm_1 … done
creating pnsmr_redis_1 … done
creating pnsmr_mysql_1 … done
creating pnsmr_nginx_1 … done

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

至此,已開(kāi)啟nginx mysql redis php 服務(wù)

三.修改各服務(wù)配置文件

1.瀏覽器輸入 127.0.0.1:9998 #此處應(yīng)輸入你的服務(wù)器ip地址,可以看到下圖

怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

2.接下來(lái)要修改容器里nginx的配置文件,先使用指令查看各容器的docker ip地址

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

此指令可以查看所有用docker-compose 開(kāi)啟的容器的ip,結(jié)果類(lèi)似下圖,可以用對(duì)應(yīng)的ip地址進(jìn)行內(nèi)部通訊

怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

3.復(fù)制nginx容器的配置文件出來(lái),并修改替換,使nginx能解析php

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

修改為下列代碼

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;#此處需要填寫(xiě)你的php容器的docker內(nèi)部通訊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?#在服務(wù)器本地目錄新建?index.php?文件,輸入<?php  phpinfo(); 并保存 vim /var/www/html/index.html #在服務(wù)器本地目錄新建 index.html 文件,輸出helloworld

訪(fǎng)問(wèn)127.0.0.1:9998, html文件解析正常

怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

訪(fǎng)問(wèn)127.0.0.1:9998/index.php,php文件解析正常

怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

4.測(cè)試mysql,redis是否生效

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

訪(fǎng)問(wèn)127.0.0.1:9998/redis.php,redis已生效

怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

進(jìn)入mysql容器

docker?exec?-it?pnsmr_mysql_1?bash

進(jìn)入mysql并更改root用戶(hù)密碼

怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

創(chuàng)建測(cè)試文件

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

訪(fǎng)問(wèn)127.0.0.1:9998/mysql.php,mysql已生效

怎么使用docker搭建php+nginx+swoole+mysql+redis環(huán)境

以上就是怎么使用

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享