位置: 编程技术 - 正文

Docker 如何布置PHP开发环境(docker-p)

编辑:rootadmin

推荐整理分享Docker 如何布置PHP开发环境(docker-p),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:dockerphp,docker怎么设置,docker pxe,docker-p,dockerphp,docker pwd,docker -p -p,docker怎么设置,内容如对您有帮助,希望把文章链接给更多的朋友!

环境部署一直是一个很大的问题,无论是开发环境还是生产环境,但是 Docker 将开发环境和生产环境以轻量级方式打包,提供了一致的环境。极大的提升了开发部署一致性。当然,实际情况并没有这么简单,因为生产环境和开发环境的配置是完全不同的,比如日志等的问题都需要单独配置,但是至少比以前更加简单方便了,这里以 PHP 开发作为例子讲解 Docker 如何布置开发环境。

一般来说,一个 PHP 项目会需要以下工具:

Web 服务器: Nginx/Tengine Web 程序: PHP-FPM 数据库: MySQL/PostgreSQL 缓存服务: Redis/Memcache

这是最简单的架构方式,在 Docker 发展早期,Docker 被大量的滥用,比如,一个镜像内启动多服务,日志收集依旧是按照 Syslog 或者别的老方式,镜像容量非常庞大,基础镜像就能达到 M,这和 Docker 当初提出的思想完全南辕北辙了,而 Alpine Linux 发行版作为一个轻量级 Linux 环境,就非常适合作为 Docker 基础镜像,Docker 官方也推荐使用 Alpine 而不是 Debian 作为基础镜像,未来大量的现有官方镜像也将会迁移到 Alpine 上。本文所有镜像都将以 Alpine 作为基础镜像。

Nginx/Tengine

这部分笔者已经在另一篇文章 Docker 容器的 Nginx 实践中讲解了 Tengine 的 Docker 实践,并且给出了 Dockerfile,由于比较偏好 Tengine,而且官方已经给出了 Nginx 的 alpine 镜像,所以这里就用 Tengine。笔者已经将镜像上传到官方 DockerHub,可以通过

<code>docker pull chasontang/tengine:2.1.2_f</code>

获取镜像,具体请看 Dockerfile。

PHP-FPM

Docker 如何布置PHP开发环境(docker-p)

Docker 官方已经提供了 PHP 的 7.0.7-fpm-alpine 镜像,Dockerfile 如下:

首先,镜像继承自 alpine:3.4 镜像,使用 apk 命令安装 php 最小依赖,同时添加 www-data 作为 php-fpm 的运行用户,将 php 的配置文件指定到 /usr/local/etc/php,然后就是下载 php-src,编译安装,这里可以参考笔者之前写的 php 编译安装文章。参数都中规中矩。安装目录被指定到 /usr/local,然后使用 scanelf 获得所依赖的运行库列表,并且将其他安装包删除。将 docker-php-ext-configure、docker-php-ext-enable、docker-php-ext-install 复制到容器中,这三个文件用于后续安装扩展。然后将 php-fpm.conf 复制到配置目录,将 error_log 和 access_log 指定到终端标准输出,daemonize = no 表示不以服务进程运行。EXPOSE 端口用于和其他容器通信,然后就是 CMD ["php-fpm"] 运行 php-fpm。而且工作目录被指定到 /var/www/html。

docker-compose

已经搞定了基础镜像,我们就可以使用基础镜像来配置容器,但是通过手工 docker 命令启动容器会非常麻烦。但是万幸的是官方已经提供了 docker-compose 命令来编排容器,只需要写一个 docker-compose.yaml 文件就行,具体可以参考官方文档。

非常容易理解,这里定义了两个服务,php-fpm 依赖 php:7.0.7-fpm-alpine 镜像,并且将 src 文件夹映射为 /var/www/html 文件夹,tengine 服务依赖 php-fpm 服务,并且 link php-fpm 服务,这样就能通过网络与 php-fpm 容器通信,tengine 服务基于 chasontang/tengine:2.1.2_f 镜像,并将 nginx.vh.default.conf 文件映射为 /etc/nginx/conf.d/default.conf 文件。然后来看 nginx.vh.default.conf

tengine 镜像实际上使用两个配置文件,一个是 /etc/nginx/nginx.conf,还有就是 /etc/nginx/conf.d/ 目录下的所有文件,因为 /etc/nginx/nginx.conf 中使用 include /etc/nginx/conf.d/*.conf; 包含了这个目录,也就是说,可以不需要去管 nginx 其他配置,只需要用自己的 nginx 虚拟主机配置替代默认的虚拟主机配置,或者说增加虚拟主机配置就行了。

从上面可以看到,default.conf 文件定义了一个 location 匹配包含 .php 的 URL,然后将其分割出 PATH_INFO 参数,将这些变量传递给 php-fpm: 的 php-fpm 服务。

这里需要注意的是,由于 Nginx 和 PHP-FPM 不在同一台主机上,所以 Nginx 只做静态文件处理和路由转发,实际的 PHP 文件执行时在 PHP-FPM 容器中发生的。所以 SCRIPT_FILENAME 变量必须要使用 PHP-FPM 容器中的目录,所以这里使用硬编码指定。当然,也可以让两个容器共享同一个数据卷,但是笔者认为,这只是为了方便容器编排,其他完全没有好处。

很容易吧! 现在我们可以快速的启动、更新环境了,但还是有很多地方需要改进。

解决wincache不支持位PHP5.5/5.6的问题(提供位wincache下载) 原创 这几天公司有台服务器需要配置,系统是WindowsR2,在IIS上配置环境是位的PHP5.5,要求支持wincache。原本心想无非就是去wincache的官网下载下来,在php

PHP生成静态HTML文档实现代码 利用PHP,将数据库中的文章数据生成单个的HTML文档。首先,有利于搜索引擎的收录。其次,避免数据库中的字段暴露在地址栏上,更安全。给出代码:p

php使用curl判断网页(不存在)的方法 原创 本文实例讲述了php使用curl判断网页(不存在)的方法。分享给大家供大家参考,具体如下:php/*php使用curl判断*Createdon-6-*Writerwww.gimoo.net*/functionchku

标签: docker-p

本文链接地址:https://www.jiuchutong.com/biancheng/296304.html 转载请保留说明!

上一篇:Laravel中使用FormRequest进行表单验证方法及问题汇总(laravel orm使用)

下一篇:PHP生成静态HTML文档实现代码(php动态生成网页)

  • 税务师考几科几分及格
  • 股权转让涉及法律
  • 员工工伤住院伙食补助标准是多少
  • 农民专业合作社属于什么企业类型
  • 开了发票不做收入的账务处理
  • 以前年度调整后财务报表
  • 公司名称变更在哪个网站
  • 已认证的专票发票在哪里
  • 资产负债表应交税金负数是什么意思
  • 融资租入固定资产的入账价值
  • 营业税金及附加包括增值税吗
  • 进项税额转出要补所得税吗
  • 计提坏账的递延税收
  • 公司新售楼总部房产税怎样算?
  • 系统技术维护费计入什么科目
  • 认证抵扣完的发票怎么处理
  • 一般企业每个月的保洁费用是多少
  • 房产证没有可以补办吗
  • 水泥厂水泥增值税率是多少?
  • 小规模纳税人教育费附加和地方教育费附加减免
  • 库存商品的核算方法
  • 如何将win11笔记本连接到家庭打印机上
  • 总成本费用包含
  • 新成立企业什么时候有财务报表
  • 销售部门的固定资产折旧计入什么科目
  • php下载限速
  • 分配股利怎么算
  • 比较坏账准备与什么有关
  • 如何汇算清缴,会计新手求指教
  • 弃置费用预计负债递延所得税怎么处理
  • 公司给员工购买商业保险报销哪些
  • php获取并显示用户的用户名
  • 比利牛斯山作为天然界限
  • php二维数组添加数据
  • css元素居中的几种方法
  • ZED2跑ORB-SLAM3+双目相机、IMU联合标定+显卡驱动与cuda/cudnn安装
  • setup.cgi
  • 出口退税附加税的计税基础
  • 增值税和普通发票的区别图片
  • etc充值卡发票可以入账吗
  • 稿费支付方式怎么填
  • 文化事业建设费的征收范围
  • 企业购进商品支付货款时,实际发生现金折扣,应计入
  • 应交税费在借方怎么调平
  • 纳税申报表上的销售额是不含税的吗
  • T-SQL语句修改数据表属性
  • 固定资产资本化后续支出
  • 开出银行承兑汇票一张,面值30000元,用于抵付
  • 个体户是否要做账务处理
  • 免抵退税怎么申报
  • 商业承兑汇票结算会计分录
  • 企业外币折算的方法包括
  • 什么是小微企业
  • 一年以内到期的长期借款属于
  • 支付宝里的收入和支出明细能查多久的?
  • 制单的基本要求是什么
  • 零售商品销售的具体核算步骤
  • 透明数据网
  • jdbc数据库连接步骤
  • zmweb.exe是什么进程
  • freebsd9.3安装教程
  • 系统分区引导修复
  • linux vim
  • 超级简单的方法
  • 电脑windows7打不开怎么办
  • windows8 defender
  • node.js教程详细
  • 一键删除通讯录联系人
  • javascript零基础入门
  • 深入探讨英文
  • 安卓手机管家如何卸载
  • ViewGroup onInterceptTouchEvent,ViewGroup onTouchEvent,View onTouchEvent执行顺序说明
  • android support包
  • 前方高能(莞尔wr)晋江
  • java dom解析
  • 税基式减免,税率式减免,税额式减免三者之间的联系
  • 深圳国家税务局赵雨婷处长
  • 地税收社保
  • 税收负担与税负转嫁
  • 交医保显示已申报怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设