利用docker搭建php7和nginx运行环境全过程(官方镜像)
本文分享的是利用docker搭建php7和nginx运行环境的全过程,分享出来供大家参考学习,下面来看看详细的介绍:
环境介绍
根目录:/docker
网站根目录:/docker/www
nginx相关目录:/docker/nginx/conf.d
准备工作
1、使用docker加速器
curl-sSLhttps://get.daocloud.io/daotools/set_mirror.sh|sh-shttp://68abbefd.m.daocloud.io servicedockerrestart
2、下载相关镜像
dockerpullnginx dockerpullphp:7.1.0-fpm
3、建立相关目录
mkdir-p/docker/www mkdir-p/docker/nginx/conf.d
4、编辑default.conf
vim/docker/nginx/conf.d/default.conf #以下为示例内容 server{ listen80default_server; server_name_; root/usr/share/nginx/html; location/{ indexindex.htmlindex.htmindex.php; autoindexoff; } location~\.php(.*)${ root/var/www/html/; fastcgi_pass172.17.0.2:9000; fastcgi_indexindex.php; fastcgi_split_path_info^((?U).+\.php)(/?.+)$; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; fastcgi_paramPATH_INFO$fastcgi_path_info; fastcgi_paramPATH_TRANSLATED$document_root$fastcgi_path_info; includefastcgi_params; } }
搭建环境
1、启动php镜像
dockerrun-p9000:9000--namemyphp\ -v/docker/www/:/var/www/html/\ --privileged=true\ -dphp:7.1.0-fpm #查看php镜像的ip地址 dockerinspect--format='{{.NetworkSettings.IPAddress}}'myphp 172.17.0.2 #修改default.conf配置文件,使fastcgi_pass的值为172.17.0.2:9000 vim/docker/nginx/conf.d/default.conf fastcgi_pass172.17.0.2:9000;
2、启动nginx镜像
dockerrun-p80:80--namemynginx\ -v/docker/www:/usr/share/nginx/html\ -v/docker/nginx/conf.d:/etc/nginx/conf.d\ --privileged=true\ -dnginx
3、查看镜像运行状态
dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 93213e1eac73nginx"nginx-g'daemonoff"3secondsagoUp2seconds0.0.0.0:80->80/tcpmynginx e93281652098php:7.1.0-fpm"docker-php-entrypoin"8minutesagoUp8minutes0.0.0.0:9000->9000/tcpmyphp
4、生成php测试文件info.php
echo"/docker/www/info.php
浏览器访问http://localhost/info.php验证
nginx虚拟机配置
以配置www.test.com虚拟机为例,项目目录地址为/docker/www/test.com/
vim/docker/nginx/conf.d/test.com.conf #示例内容如下 server{ listen80; server_namewww.test.com; root/usr/share/nginx/html/test.com/; location/{ indexindex.htmlindex.htmindex.php; autoindexoff; } location~\.php(.*)${ root/var/www/html/test.com/; fastcgi_pass172.17.0.2:9000; fastcgi_indexindex.php; fastcgi_split_path_info^((?U).+\.php)(/?.+)$; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; fastcgi_paramPATH_INFO$fastcgi_path_info; fastcgi_paramPATH_TRANSLATED$document_root$fastcgi_path_info; includefastcgi_params; } } #重启nginx镜像 dockerrestartmynginx
docker常用命令
1、停止所有正在运行的容器
dockerkill$(dockerps-a-q)
2、删除所有已停止运行的容器
dockerrm$(dockerps-a-q)
3、查看容器运行状态
dockerstats
4、进入容器内进行命令行操作
dockerexec-itcontent-name-or-id/bin/bash
常见问题
CentOS7环境下因为宿主的SELINUX,导致在nginx容器内无法访问配置文件(default.conf),进而容器无法提供web服务
解决方法:
#############方法一############# #在宿主主机关闭SELINUX #临时关闭 setenforce0 #永久关闭修改/etc/sysconfig/selinux文件 SELINUX=disabled #############方法二############# #以特权方式运行容器 #--privileged参数为true dockerrun-it--privileged=true-dnginx
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。