前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >容器化的LNMP环境,如何升级PHP到8.1.9

容器化的LNMP环境,如何升级PHP到8.1.9

作者头像
崔哥
发布2022-09-22 15:43:15
发布2022-09-22 15:43:15
1.3K00
代码可运行
举报
文章被收录于专栏:崔哥的专栏崔哥的专栏
运行总次数:0
代码可运行

为什么要容器化

提到docker你可能会想到k8s,想到分布式,想到高并发;那单机服务器,或者开发环境有没有必要上docker呢?我觉得有!以LNMP环境为例

相比传统的LNMP环境搭建,docker有哪些优势?

之前安装LNMP环境你可能会选择yum,或手动编译,或宝塔之类的;我不太喜欢宝塔之类的,因为给它们的权限太大了,如果有漏洞那是很危险的。再说yum和手动编译,这两个你都没法保证一次成功次次成功!!!比如你在本地安装好了,然后你用同样的步骤到服务上安装,有可能会失败,因为系统不一样!

docker 成功的解决了上面的问题,就是能做到一次成功次次成功。利用编排工具docker-compose,你不必记忆docker run的一堆参数,只需要通过几个命令就能很方便的管理一组容器。剩下的你只需要关注一个docker-compose.yml文件,不管什么时候用,用在哪里,都能一摸一样的还原出来

PHP7.4升级到8.1.9

容器化以后,升级也变的简单了,你只需要制作新的镜像,然后替换掉旧的镜像即可

本地制作PHP8.1.9镜像及使用

我的Dockerfile,里面有几个扩展,不需要可以去掉

代码语言:javascript
代码运行次数:0
运行
复制
FROM php:8.1.9-fpm
RUN apt-get update && apt-get install -y git procps inetutils-ping net-tools \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libzip-dev \
        libssl-dev \
        libcurl4-openssl-dev \
        libc-ares-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd \
    && pecl install redis-5.3.7 mongodb-1.14.0 \
    && pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes"' swoole-5.0.0 \
    && docker-php-ext-install pdo pdo_mysql mysqli zip sockets \
    && docker-php-ext-enable redis swoole mongodb \
    && curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
    && chmod +x /usr/bin/composer \
    && composer self-update 2.3.10 \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

构建镜像

代码语言:javascript
代码运行次数:0
运行
复制
docker build -t registry.cn-hangzhou.aliyuncs.com/cuiw/php:v2-mongodb .  

推送镜像

代码语言:javascript
代码运行次数:0
运行
复制
docker push registry.cn-hangzhou.aliyuncs.com/cuiw/php:v2-mongodb 

使用镜像,以下是部分docker-compose.yml

代码语言:javascript
代码运行次数:0
运行
复制
version: '3'

networks:
  web-network:
...
  docker-php-fpm:
    image: registry.cn-hangzhou.aliyuncs.com/cuiw/php:v2-mongodb
    hostname: php-fpm
    restart: always
    tty: true
    volumes:
      - ./php-fpm/etc/php/php.ini:/usr/local/etc/php/php.ini
      - ./php-fpm/etc/php-fpm.d/docker.conf:/usr/local/etc/php-fpm.d/docker.conf
      - ./php-fpm/etc/php-fpm.d/www.conf:/usr/local/etc/php-fpm.d/www.conf
      - ../../PhpstormProjects:/var/www
      - ../log/php:/var/log/php
      - ../log/php-fpm:/var/log/php-fpm
    networks:
      - web-network
...

注意:php-7.4和php-8.1.9的配置文件有些许差异,建议比较后修改

将PHP8.1.9镜像同步到服务器

好了,本地的PHP8.1.9镜像测试完没问题,就可以修改服务器上的docker-compose.yml文件了,修改完之后,按以下步骤进行

拉取镜像

代码语言:javascript
代码运行次数:0
运行
复制
docker pull registry.cn-hangzhou.aliyuncs.com/cuiw/php:v2-mongodb

停止并删除旧容器

代码语言:javascript
代码运行次数:0
运行
复制
docker-compose down {容器id}

启动新容器

代码语言:javascript
代码运行次数:0
运行
复制
docker-compose up -d docker-php-fpm

美中不足,这个替换旧容器的过程不能做到无缝衔接。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要容器化
    • 相比传统的LNMP环境搭建,docker有哪些优势?
  • PHP7.4升级到8.1.9
    • 本地制作PHP8.1.9镜像及使用
    • 将PHP8.1.9镜像同步到服务器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档