zoukankan      html  css  js  c++  java
  • 玩转dnmp之自定义PHP容器

    文章简介

    在前面几篇文章中,我们使用dnmp搭建了一个完整的docker开发环境。这篇文章接着分享如何在dnmp的基础上搭建一个自定义的PHP容器,实现多版本的PHP容器。

    前期准备

    首先我们下载dnmp仓库
    复制docker-compose.sample.yml文件为docker-compose.yml

    cp docker-compose.sample.yml docker-compose.yml
    

    复制env.sample为.env

    cp env.sample ./env
    

    修改配置

    首先我们根据需要在.env文件中配置好PHP容器需要映射的端口等信息。添加如下配置(可放在任意位置):

    #
    # PHP73
    #
    PHP73_VERSION=7.3.22
    PHP73_PHP_CONF_FILE=./services/php73/php.ini
    PHP73_FPM_CONF_FILE=./services/php73/php-fpm.conf
    PHP73_LOG_DIR=./logs/php
    PHP73_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache
    PHP_SWOOLE1_PORT=9504
    PHP_SWOOLE2_PORT=9505
    PHP_SWOOLE3_PORT=9506
    PHP_SWOOLE4_PORT=9507
    PHP_SWOOLE5_PORT=9508
    PHP_SWOOLE6_PORT=9509
    

    这里的swoole可以根据自己的需要定义,比如你只需要映射一个端口9505,直接值配置一个9504。只需要与下面的.docker-compose.yml一一对应起来即可。

    接下来,配置doker-compose.yml文件。只需要添加如下内容即可:

      php73:
        build:
          context: ./services/php
          args:
            PHP_VERSION: php:${PHP73_VERSION}-fpm-alpine
            CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
            PHP_EXTENSIONS: ${PHP56_EXTENSIONS}
            TZ: "$TZ"
        container_name: php73
        ports:
          - "${PHP_SWOOLE1_PORT}:9504"
          - "${PHP_SWOOLE2_PORT}:9505"
          - "${PHP_SWOOLE3_PORT}:9506"
          - "${PHP_SWOOLE4_PORT}:9507"
          - "${PHP_SWOOLE5_PORT}:9508"
          - "${PHP_SWOOLE6_PORT}:9509"
    

    这里的container_name可以根据自己的需要来配置,建议根据你的PHP版本号定义容器名字。

    安装容器

    通过上面简单的配置,我们接下来运行如下命令,就可以搭建一个完整的PHP容器了:

    docker-compose up
    

    安装完之后,查看效果:

    CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                        NAMES
    0e1376e67300        dnmp_php73           "docker-php-entrypoi…"   35 hours ago        Up 42 minutes       9000/tcp, 0.0.0.0:9504-9509->9504-9509/tcp   php73
    

    证明我们的自定义容器安装成功了,接下来,我们就配置nginx如何使用该容器。

    使用容器

    使用该容器超级简单,只需要在nginx配置时,指向我们创建好的容器即可。

    server {
            listen 80;
            server_name baidu.com;
    
            root /www/mini-program-server/web;
            index index.php index.html;
    
            access_log  /var/log/nginx/nginx.baidu.error.log;
            error_log  /var/log/nginx/nginx.baidu.access.log;
    
            include rewrite/thinkphp.conf;
    
            location ~ .php$ {
    			  # 只需要将这里的PHP73写成我们创建好的容器名称即可。
                    fastcgi_pass   php73:9000;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    include        fastcgi_params;
            }
    }
    

    最终结论

    通过该方式,我们创建其他的容器也是类似的方式,只要配置好即可。

  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/qqblog/p/13702990.html
Copyright © 2011-2022 走看看