• 使用Docker快速搭建PHP开发环境


    最近有个同事找过来,希望我对在很早之前写的一个PHP网站上增加一些功能,当时开发使用xampp构建的本地开发环境,但是现在我的笔记本电脑已经更新,没有当时的开发环境。本着尽量不往电脑上装无用软件的原则,想到能不能用Docker来构建本地开发环境,因此本文介绍了如何基于Docker来快速构建本地PHP开发环境,供有需要的同学参考使用。

    本文基于 5.6-fpm-alpine3.8 以及 ngingx 搭建Mac 下的PHP开发环境。

    前期准备

    首先下载所需要的镜像文件

    $ docker pull php:5.6-fpm-alpine3.8
    $ docker pull nginx
    $ docker pull mysql
    

    用户需要到hub.docker.com,搜索PHP并通过tags找到自己希望安装的版本,我的项目因为开发时间比较久了,不能够支持最新的PHP,所以安装的是5.6版本。

    我们需要准备一个工作目录,例如lnmp,在工作目录下准备网站根目录、Nginx配置文件目录、Nginx日志目录。

    $ mkdir lnmp
    $ cd lnmp
    $ mkdir -p nginx/www nginx/logs nginx/conf
    

    nginx/conf目录下准备nginx的配置文件php.conf。

    server {
    	listen	80;
    	server_name	localhost;
    
    	location / {
    		root	/usr/share/nginx/html;
    		index	index.html index.htm index.php;
    	}
    
    	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	/www/$fastcgi_script_name;
    		include		fastcgi_params;
    	}
    }
    

    编排文件

    在工作目录下创建docker-compose.yml编排文件。

    关于docker-compose的详细介绍可以参考我之前的文章docker-compose 使用介绍

    version: "2.1"
    services:
        nginx:
            image: nginx
            ports:
                - "80:80"
            volumes: 
                - ~/Projects/sh-valley/docker-conf/lnmp/nginx/www:/usr/share/nginx/html
                - ~/Projects/sh-valley/docker-conf/lnmp/nginx/conf:/etc/nginx/conf.d
                - ~/Projects/sh-valley/docker-conf/lnmp/nginx/logs:/var/log/nginx
            networks:
                - lnmp-network
        php:
            image: php:5.6-fpm-alpine3.8
            volumes:
                - ~/Projects/sh-valley/docker-conf/lnmp/nginx/www:/www
            networks:
                - lnmp-network
        mysql:
            image: mysql
            ports:
                - "3306:3306"
            environment:
                - MYSQL_ROOT_PASSWORD=123456
            networks:
                - lnmp-network
    networks: 
        lnmp-network:
    
    

    至此,我们完成了所有的准备工作,马上可以启动查看效果。

    运行效果

    $ docker-compose up -d
    Creating network "lnmp_php-network" with the default driver
    Creating lnmp_nginx_1 ... done
    Creating lnmp_php_1   ... done
    

    马上就能看到熟悉的phpinfo界面了。

    安装扩展

    默认php镜像中提供的扩展比较少,缺少诸如mysql、gd2等常用的扩展,这样我们就需要自己安装并启用扩展。

    首先进入到php容器,用php -m命令查看本地有什么扩展。

    可以使用docker-php-ext-install命令来安装扩展。

    $ docker-php-ext-install mysql
    

    扩展安装好之后就可以在php.ini中启用。我们从phpinfo中可以看到,容器环境下默认的php.ini没有启用,可以从/usr/local/etc/php下将php.ini-development拷贝为php.ini。通过修改php.ini中配置,启用自己需要的扩展。下面是几个扩展安装的命令,供大家参考。

    • docker-php-ext-source 在容器中创建一个/usr/src/php目录
    • docker-php-ext-enable启用PHP扩展,省去我们手工编辑php.ini的过程
    • docker-php-ext-install安装并启用PHP扩展
    • docker-php-ext-configure经常与docker-php-ext-install搭配,在需要自定义扩展的配置时使用

    参考资料

    1. Docker秒搭建Php7开发环境
    2. docker-compose 使用介绍
    3. Docker PHP
    4. docker完整配置nginx+php+mysql
    5. Docker php安装扩展步骤详解
  • 相关阅读:
    iptables一次性封多个ip,使用ipset 工具
    计算机网络知识整理
    SpringBoot启动流程及其原理
    CAP与Base理论
    Java7与Java8中的HashMap和ConcurrentHashMap知识点总结
    用chrome浏览器进行前端debug和停止debug
    Java synchronized实现原理总结和偏量锁、轻量锁、重量锁、自旋锁
    WIN10笔记本屏幕亮度无法调节,一直是最高亮度
    Win10任务栏卡死解决方法
    ClassLoader类加载器 & Java类加载机制 & 破坏双亲委托机制
  • 原文地址:https://www.cnblogs.com/cocowool/p/docker-php-dev.html
Copyright © 2020-2023  润新知