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;
            }
    }
    

    最终结论

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

  • 相关阅读:
    Ural 1996 Cipher Message 3 (生成函数+FFT)
    UVA 12633 Super Rooks on Chessboard (生成函数+FFT)
    HDU 5307 He is Flying (生成函数+FFT)
    BZOJ 2039 人员雇佣 (最小割)
    BZOJ 3158 千钧一发 (最大流->二分图带权最大独立集)
    BZOJ 3144 [HNOI2013]切糕 (最大流+巧妙的建图)
    BZOJ 3774 最优选择 (最小割+二分图)
    BZOJ 3876 [AHOI/JSOI2014]支线剧情 (最小费用可行流)
    BZOJ 3771 Triple (FFT+生成函数+容斥)
    洛谷 P3121 【[USACO15FEB]审查(黄金)Censoring (Gold)】
  • 原文地址:https://www.cnblogs.com/qqblog/p/13702990.html
Copyright © 2011-2022 走看看