首页 > 数据库 >dnmp 运行多PHP版本--PHP74安装支持swoole,kafka, redis

dnmp 运行多PHP版本--PHP74安装支持swoole,kafka, redis

时间:2022-12-16 19:22:41浏览次数:66  
标签:compose swoole -- redis && docker php

官方文档: https://github.com/yeszao/dnmp

本身默认PHP7.1版本
如果需要同时支持多个版本PHP,需要另外在配置
下面举例子配置多个PHP版本 -- PHP7.4

  1. dnmp/service目录下复制多一份php目录, 并修改成PHP74

  1. 根目录下docker-compose.yml 同样复制php配置同一份
    注意修改php相关变量、字符串为php74
php74:
    build:
      context: ./services/php74
      args:
        PHP_VERSION: php:${PHP74_VERSION}-fpm-alpine
        CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
        PHP_EXTENSIONS: ${PHP74_EXTENSIONS}
        TZ: "$TZ"
    container_name: php74
    expose:
      - 9501
    extra_hosts:
      - "www.site1.com:172.17.0.1"
    volumes:
      - ${SOURCE_DIR}:/www/:rw
      - ${PHP74_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
      - ${PHP74_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
      - ${PHP74_LOG_DIR}:/var/log/php
      - ${DATA_DIR}/composer74:/tmp/composer
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - default

  1. 根目录下.env 文件同样复制php配置同一份
    注意扩展配置的不同
PHP74_VERSION=7.4
PHP74_PHP_CONF_FILE=./services/php/php.ini
PHP74_FPM_CONF_FILE=./services/php/php-fpm.conf
PHP74_LOG_DIR=./logs/php
PHP74_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,sockets,opcache,rdkafka,redis,pcntl

  1. 由于按docker-composer up 命令直接全部打包镜像生成容器,会发现php74到swoole扩展并没有生效
    所以需要改动php74目录下dockerfile文件, 另外进行编译安装
    需要添加以下dockerfile命令

RUN apk --update add --no-cache --virtual .build-deps autoconf  g++ libtool make curl-dev gettext-dev linux-headers

RUN wget https://github.com/emcrisostomo/fswatch/releases/download/1.14.0/fswatch-1.14.0.tar.gz \
    && tar -xf fswatch-1.14.0.tar.gz \
    && cd fswatch-1.14.0/ \
    && ./configure \
    && make \
    && make install

RUN docker-php-source extract && \
    mkdir /usr/src/php/ext/swoole && \
    curl -sfL https://github.com/swoole/swoole-src/archive/v4.7.1.tar.gz -o swoole.tar.gz && \
    tar xfz swoole.tar.gz --strip-components=1 -C /usr/src/php/ext/swoole && \
    docker-php-ext-configure swoole \
        --enable-http2   \
        --enable-mysqlnd \
        --enable-openssl \
        --enable-sockets --enable-swoole-curl --enable-swoole-json && \
    docker-php-ext-install -j$(nproc) swoole && \
    rm -f swoole.tar.gz $HOME/.composer/*-old.phar && \
    docker-php-source delete

RUN docker-php-ext-enable swoole

RUN echo swoole.use_shortname = 'Off'  >> /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini && \
    cat /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini

  1. 添加完成执行下命令,测试

默认

$ docker-compose up                         # 创建并且启动所有容器
$ docker-compose up -d                      # 创建并且后台运行方式启动所有容器
$ docker-compose up nginx php mysql         # 创建并且启动nginx、php、mysql的多个容器
$ docker-compose up -d nginx php  mysql     # 创建并且已后台运行的方式启动nginx、php、mysql容器


$ docker-compose start php                  # 启动服务
$ docker-compose stop php                   # 停止服务
$ docker-compose restart php                # 重启服务
$ docker-compose build php                  # 构建或者重新构建服务

$ docker-compose rm php                     # 删除并且停止php容器
$ docker-compose down                       # 停止并删除容器,网络,图像和挂载卷

单独编译调试可以执行

docker-compose stop php74 && docker-compose rm php74 && docker-compose build php74 &&  docker-compose up -d  php74

标签:compose,swoole,--,redis,&&,docker,php
From: https://www.cnblogs.com/smallyi/p/16988145.html

相关文章

  • (多模态)VLP
    0、图文多模态学习包含以下:普通多模态学习,如图文检索、视觉问答、视觉推理、视觉蕴含:CLIPlanguageguideddetectionlanguageguidedsegmentation文本图像生成:Da......
  • LEETCODE 222. 完全二叉树的节点个数
    递归递归很简单,遍历整棵树即可,代码复杂度为O(n)点击查看代码funccountNodes(root*TreeNode)int{ifroot==nil{return0}return1+coun......
  • 安卓高端破冰 vivo率先“微笑”
    2022年市场走到尾声,年初曾有预测市场会略有回暖,事实是后期的现实持续走低,今年手机厂商的日子并不好过。但是在这样的低迷氛围中,市场也在发生着微妙的变化。从市场份额来看,......
  • STM32时钟配置笔记
    时钟配置获取当前时钟源及总线频率RCC_ClocksTypeDefRCC_CLK;//写在main()的最前面,定义要在赋值前面RCC_GetClocksFreq(&RCC_CLK);//Getchipfrequenciesprintf("Sys......
  • uniapp中正确使用echart
    uniapp中不能直接使用百度echart,要么就只能嵌入html,然后在html中进入echart进行使用,这样非常不方便,下面介绍这个插件,对百度echart进行局部小改造,使他能在uniapp上使用。关......
  • 体验 Gitea Actions
    即将推出的GiteaActions致力于打造一个CI/CD工具的标准协议,第三方CI系统可以基于actions协议与Gitea平台集成,提供一站式管理方案。GiteaActions为此走出了第......
  • Hessian2序列化支持这一点,让重构dubbo接口更容易了
    先看如下Hessian2序列化的测试代码。importcom.alibaba.com.caucho.hessian.io.Hessian2Input;importcom.alibaba.com.caucho.hessian.io.Hessian2Output;importcom......
  • Codeforces Round #837 (Div. 2)
    A.HossamandCombinatorics(CF1771A)题目大意给定一个长度为\(n\)的数组\(a\),问有多少个数对其差的绝对值等于该数组的极差。解题思路若最大值和最小值相等,则答案......
  • python 装饰器(二)
         ......
  • PHP加密解密案例--Crypt
    加密解密代码如下/***加密字符串*@paramstring$str字符串*@paramstring$key加密key*@paraminteger$expire有效期(秒)......