Docker 安装 PHP并与Nginx的部署实例讲解


Posted in PHP onFebruary 27, 2021

安装 PHP 镜像

查找 Docker Hub 上的 php 镜像:

Docker 安装 PHP并与Nginx的部署实例讲解

此外,我们还可以用 docker search php 命令来查看可用版本:

Docker 安装 PHP并与Nginx的部署实例讲解

这里我们拉取官方的镜像,标签为7.3.24-fpm-stretch

docker pull php:7.3.24-fpm-stretch

Docker 安装 PHP并与Nginx的部署实例讲解

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为7.3.24-fpm-stretch的镜像。

Docker 安装 PHP并与Nginx的部署实例讲解

Nginx + PHP 部署

Nginx 部署可以查看本人博客中:Docker 安装 Nginx,一些 Nginx 的配置参考这篇文章。

启动 PHP:

docker run -d -v /root/nginx/www:/var/www/html -p 9000:9000 --name xy_phpfpm php:7.3.24-fpm-stretch

参数说明

-d 让容器在后台运行

-p 添加主机到容器的端口映射

-v 添加目录映射,即主机上的 /root/nginx/www和容器中/var/www/html目录是同步的
-v /root/nginx/www:/var/www/html : 将主机中项目的目录 /root/nginx/www 挂载到容器的/var/www/html

?name myphp-fpm : 将容器命名为 my_phpfpm

查看PHPfpm端口9000是否启动

这步很重要,没启动的话需要重装php镜像

netstat -tunlp |grep 9000

Docker 安装 PHP并与Nginx的部署实例讲解

netstat
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。

netstat 查看端口占用语法格式:

netstat -tunlp | grep 端口号

-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名

宿主机创建挂在目录

创建 ~/nginx/conf/conf.d 目录:

mkdir ~/nginx/conf/conf.d

Docker 安装 PHP并与Nginx的部署实例讲解

在该目录下添加 ~/nginx/conf/conf.d/runoob-test-php.conf 文件,内容如下:

server {
 listen  80;
 server_name localhost;

 location / {
  root /usr/share/nginx/html;
  index index.php index.html index.htm;
 }

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
  root /usr/share/nginx/html;
 }

 location ~ \.php$ {
  fastcgi_pass php:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
  include  fastcgi_params;
 }
}

配置文件说明:

php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
/var/www/html/: 是 xy_phpfpm容器 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录。

启动 nginx:

docker run --name ngixn -p 80:80 -d \
 -v /root/nginx/www:/usr/share/nginx/html:ro \
 -v /root/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
 --link xy_phpfpm:php \
 nginx

参数说明

-p 80:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
--link xy_phpfpm:php: 把 xy_phpfpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

接下来我们在 ~/nginx/www 目录下创建 index.php,代码如下:

<?php
echo phpinfo();
?>

浏览器打开 http://106.52.36.65:8083/index.php,显示如下:

Docker 安装 PHP并与Nginx的部署实例讲解

说明

凡是修改了nginx配置都需要重启nginx服务

docker stop ngixn
docker start ngixn

到此这篇关于Docker 安装 PHP并与Nginx的部署实例讲解的文章就介绍到这了,更多相关Docker 安装 PHP并与Nginx的部署内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
php实现文件下载实例分享
Jun 02 PHP
thinkphp模板继承实例简述
Nov 26 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
PHP基于进程控制函数实现多线程
Dec 09 PHP
PHP加MySQL消息队列深入理解
Feb 27 #PHP
php慢查询日志和错误日志使用详解
Feb 27 #PHP
php的单例模式及应用场景详解
Feb 27 #PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 #PHP
PHP并发场景的三种解决方案代码实例
Feb 27 #PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 #PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 #PHP
You might like
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
Python正则表达式常用函数总结
2017/06/24 Python
浅析Python四种数据类型
2018/09/26 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
历史专业学生的自我评价
2014/02/28 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
上学路上观后感
2015/06/16 职场文书