基于Docker版的Centos镜像搭建PHP环境

基于Docker版的Centos镜像搭建PHP环境

[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/157/ ]

介绍一下我的开发环境,window系统装virtualbox虚拟机,虚拟机装的系统和生产环境都是Centos(圣斗士?),经典的lnmp环境,再就是添加了一些依赖的PHP拓展.当前使用的PHP版本为5.5,如果需要切换到PHP7.3版本,怎么办?

写在前面,之所以写这篇博客,一是做个记录便于自己查阅,二来还能帮助到遇上相同问题的同学。

本文摘要:我遇上什么问题,为什么用Docker,以及怎么做。

问题:需要切换PHP版本测试代码兼容性


介绍一下我的开发环境,window系统装virtualbox虚拟机,虚拟机装的系统和生产环境都是Centos(圣斗士?),经典的lnmp环境,再就是添加了一些依赖的PHP拓展。当前使用的PHP版本为5.5,如果需要切换到PHP7.3版本,怎么办?

为什么用Docker


我们当然可以配置多个版本的php-fpm,然后通过Nginx转发请求到不同版本的php-fpm

PHP5:5.mo2g.com -> Nginx -> php-fpm:9000

PHP7:7.mo2g.com -> Nginx -> php-fpm:9007

述转发流程基本能满足需求,但需要额外的编译安装配置。当习惯yum并且通过yum就能解决的时候,我找不到让自己去编译安装的理由。

所以我选择了通过Docker来隔离环境,通过yum安装PHP和需要的PHP的拓展。

引入docker后,大概的逻辑如下

PHP5:5.mo2g.com -> Nginx -> docker-php5:9000 -> php-fpm:9000

PHP7:7.mo2g.com -> Nginx -> docker-php7:9007 -> php-fpm:9000

下边讲怎么做?


1. 官方提供alpine版的PHP7镜像才80MB。

2. Centos镜像就已经达到了202MB,在这基础上安装PHP7后,镜像增长到了357MB。

为什么不用官方镜像,还要自己搞一个这么"庞大"的镜像?

1. alpine版的PHP虽然容量上有优势,但是添加某些拓展不是很方便。例如php-memcached,还得下载源码然后编译。

2. 熟悉Centos,通过yum能解决已知的PHP拓展或者依赖相关的问题

3. 用Docker装PHP的初衷就是想测试代码从5.X升级到7.X存在的问题,暂时不想花时间引入或者解决新的问题

基于以上思考,才尝试自己写dockerfile来创建PHP7镜像。

在编写dockerfile的过程,走了很多弯路,主要卡在了nginx转发请求到docker镜像的时候,总是报502错误。如果你也遇到类似情况,或许下边能帮到你。

敲黑板,讲重点。

1. php-fpm默认监听地址: 127.0.0.1:9000

2. php-fpm默认只接受该地址请求: 127.0.0.1

所以我们需要修改配置文件/etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000 改成 listen = 9000

listen.allowed_clients = 127.0.0.1 注释掉或删掉

最后再配上我自用的dockerfile,希望能帮到你。

FROM daocloud.io/library/centos:7.6.1810

RUN rpm -i https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm --nodeps \
    && rpm -i https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm \
    && yum install -y  php php-memcached php-fpm php-mysql php-pdo php-redis \ 
    	php-dom php-gd php-mbstring php-mcrypt --enablerepo=remi-php73 \
    && yum clean all \
    && mkdir /run/php-fpm \
    && sed -i 's/listen = 127.0.0.1:9000/listen = 9000/g' /etc/php-fpm.d/www.conf \ 
    && sed -i 's/listen.allowed_clients = 127.0.0.1/;listen.allowed_clients = 127.0.0.1/g' /etc/php-fpm.d/www.conf

EXPOSE 9000

CMD ["/usr/sbin/php-fpm","--nodaemonize"]


评论:

  1. 暂无评论...
  2. 我来说两句:

      切换  

    磨途歌检测发现,您当前使用的浏览器版本过低,要想使用画板模式,请先更新浏览器

      切换  

    磨途歌随机验证码