• 使用 Docker 秒速搭建多版本 PHP 开发环境


    文章中使用的软件:

    • Mac:11.4(macOS Big Sur) ,处理器为:Intel Core。
    • Docker:3.3.3

    目标

    • 支持 PHP 5.6.x 环境
    • 支持 PHP 7.2.x 环境

    下载

    Docker 软件下载安装,不做过多解释,一步步安装即可。

    下载地址:https://www.docker.com/products/docker-desktop

    代理设置

    "registry-mirrors" : [
        "http://registry.docker-cn.com",
        "http://hub-mirror.c.163.com"
      ],
    

    配置环境

    PHP 7.2.x,占用本地端口 8081

    1. 启动 docker;
    2. 下载压缩包:php7-2-x.zip 并进行解压;
    3. 进入到 php7-2-x 目录,直接运行 docker-compose up 即可;
    4. 浏览器输入:http://127.0.0.1:8081/;

    PHP 5.6.x,占用本地端口 8082

    1. 启动 docker;
    2. 下载压缩包:php5-6-x.zip 并进行解压;
    3. 进入到 php5-6-x 目录,直接运行 docker-compose up 即可;
    4. 浏览器输入:http://127.0.0.1:8082/;

    端口映射

    local.php72.com -> 127.0.0.1:8081

    因为在 /etc/hosts 文件中不能做端口映射,需要借助其他工具。

    我借助的工具为 Chrome 浏览器插件:Simple Proxy

    下载方式:

    • Chrome 应用商店下载,搜索 Simple Proxy
    • 加载本地扩展程序,下载地址:chrome-simply-proxy

    看下安装好界面:

    配置成功后,访问 http://local.php72.com/

    local.php56.com -> 127.0.0.1:8082

    同上。

    备注

    docker-compose 相关命令

    • docker-compose up 构建容器 参数[-d]为后台运行
    • docker-compose start 启用容器
    • docker-compose stop 停止容器
    • docker-compose restart 重启容器
    • docker-compose down 删除容器
    • docker-compose ps 查看当前容器状态

    php7-2-x 目录介绍

    .
    ├── docker-compose.yml
    ├── log
    │   └── nginx
    │       └── local.php72.com_access.log
    ├── phpdocker
    │   ├── README.html
    │   ├── README.md
    │   ├── nginx
    │   │   └── default.conf
    │   └── php-fpm
    │       ├── Dockerfile
    │       └── php-ini-overrides.ini
    └── web
        └── phpinfo
            └── index.php
    

    1、docker-compose.yml,容器编排的配置文件,文件无需更改。

    version: "3.1"
    services:
    
        webserver:
          image: nginx:alpine
          container_name: php7-2-x-webserver
          working_dir: /application
          volumes:
              - .:/application
              - ./phpdocker/nginx:/etc/nginx/conf.d
          ports:
           - "8081:80"
    
        php-fpm:
          build: phpdocker/php-fpm
          container_name: php7-2-x-php-fpm
          working_dir: /application
          volumes:
            - .:/application
            - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
    

    2、log/nginx 为日志目录,包含 *_access.log 和 _php_errors.log, 为配置的虚拟域名。

    3、phpdocker/nginx 为虚拟域名配置目录,其中 default.conf 配置的虚拟域名为 local.php72.com,不过多解释,大家一看就懂,其他目录和文件无需调整。

    server {
        listen 80;
    
        server_name local.php72.com;
    
        client_max_body_size 108M;
    
        access_log /application/log/nginx/${server_name}_access.log;
    
    
        root /application/web/phpinfo;
        index index.php;
    
        # try to serve file directly, fallback to index.php
        location / {
            try_files $uri /index.php$is_args$args;
        }
    
        if (!-e $request_filename) {
            rewrite ^.*$ /index.php last;
        }
    
        location ~ .php$ {
            fastcgi_pass php-fpm:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PHP_VALUE "error_log=/application/log/nginx/${server_name}_php_errors.log";
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            include fastcgi_params;
        }
        
    }
    
    

    4、web 为代码仓库目录,其中 phpinfo 为域名 local.php72.com 指向的代码目录。

    如果想要新增虚拟域名(local.abc.com)配置时,只需 3 步:

    1. 将代码文件夹 abc 放到 web 目录下;
    2. 新增文件 local.abc.com.conf,在配置文件中将代码目录指向到 abc 目录;
    3. 重启容器 docker-compose restart;

    php5-6-x 目录介绍

    同上。

    zip 文件如何生成的?

    大家可能会有疑问,zip 文件如何生成的,如果我想搭建其他版本的环境怎么办?

    这些文件是在线生成的,网址:https://phpdocker.io/generator

    支持的 PHP 版本有:5.6.x7.0.x7.1.x7.2.x7.3.x7.4.x 等。

    同时还支持 MySQLMariaDBElasticsearch 等。

    按需选择后,点击 Generate project archive 即可生成压缩包。

    上面的 php5-6-x.zip 和 php7-2-x.zip 就是这种方式生成的,仅仅是对其进行微调,比如配置 log 目录,web 目录等。

    更多功能,大家去探索吧。

    下载文章中用到的 zip 文件,请在「新亮笔记」公众号内回复:phpdocker 即可。

    如果你有疑问,快来我的星球交流讨论吧 https://t.zsxq.com/iIUVVnA

    作者:新亮笔记(关注公众号,可申请添加微信好友)
    出处:https://www.cnblogs.com/xinliangcoder
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    protobuf 使用
    rsync实现Linux与windows增量更新数据
    单例模式-通用写法1
    cxf RESTful service client
    IDEAspringboot项目自动生成junit测试
    Centos8配置网络NM
    Oracle终止正在执行中的存储过程
    Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT.
    shell中判断变量是否存在某个集合中
    redis-ha部署
  • 原文地址:https://www.cnblogs.com/xinliangcoder/p/14966187.html
Copyright © 2020-2023  润新知