前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转dnmp之自定义容器

玩转dnmp之自定义容器

作者头像
Mandy的名字被占用了
发布2020-09-24 15:47:58
7680
发布2020-09-24 15:47:58
举报

文章简介

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

前期准备

首先我们下载dnmp仓库https://github.com/bruceqiq/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;
        }
}

最终结论

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡二条的技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章简介
  • 前期准备
  • 修改配置
  • 安装容器
  • 使用容器
  • 最终结论
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档