首页 > 编程语言 >玩转dnmp之自定义PHP容器

玩转dnmp之自定义PHP容器

时间:2023-01-03 10:35:02浏览次数:38  
标签:容器 php 自定义 compose dnmp docker PHP PORT

文章简介

在前面几篇文章中,我们使用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;
}
}

最终结论

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

卡二条的所有博客均来自微信公众号: 卡二条的技术圈



标签:容器,php,自定义,compose,dnmp,docker,PHP,PORT
From: https://blog.51cto.com/u_10992108/5984667

相关文章

  • 【命令行copy命令】将php与jpg图片合并
    合成jpgD:\file\合成>copy/bhan1.jpg+bad.phphan4.jpg合成ExcelD:\file\合成>copy/bSys_Dept_合成.xls+bad.phpDept1.xls copy命令 ......
  • 玩转dnmp之端口配置篇
    文章简介在上面一篇文章中,分享过如何搭建和使用dnmp,今天分享如何修改dnmp中PHP容器的端口映射功能。问题归纳在PHP容器中,安装了一个swoole扩展,启动了一个server,端口是9501。......
  • vue-slot及自定义分发
    Vue-slot插槽应用在组合组件的场景中<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><divid="app">......
  • 使用lambda表达式实现sort的自定义排序
    使用lambda表达式实现sort的自定义排序(C++andJava)首先大致讲一下什么是lambda表达式你也可以将它就当做是匿名函数,lambda表达式其实就是匿名函数演化出的一种语法系统......
  • Excel 自定义格式
    Excel自定义格式代码的结构,常规情况下分为四部分,中间用英文的分号;分隔,每一段的意思是:正数格式;负数格式;零格式;文本格式如果使用条件判断,每一段的意思是:[条件1]指定......
  • 一步一步自定义SpringMVC参数解析器
    ​​​​随心所欲,自定义参数解析器绑定数据。题图:fromZoommy干货SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上。自定义一个参数解析器需要实现......
  • odoo10如何自定义自动生成单据编号
    1.在已有的model中穿件一个字段nameclassqingjiadan(models.Model):_name='qingjia.qingjiadan'name=fields.Char(string='编号',readonly=True)2.创建qingjia_app......
  • php面向对象(OOP)编程
    大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。构造函数的声明与其它操......
  • jsp自定义标签
    jsp自定义标签   需求:向浏览器输出当前客户的IP地址(只能使用jsp标签)1.自定义标签开发步骤    1. 编写一个普通的java类,继承SimpleTagSupport......
  • windows下PHP APC拓展的安装和配置
    APC简介APC(AlternativePHPCache)是一个PHP缓存。它在内存中存储PHP页面并且减少了硬盘的I/O。这对于性能的提升十分明显。你甚至可以在CPU使用率下降50%的情况下提升系统50......