Docker版PHP多版本环境搭建

本文介绍了如何使用Docker在Mac环境下搭建PHP5.6和PHP7.3共存的开发环境,详细阐述了从创建挂载目录、配置Nginx和PHP容器、安装扩展到使用Composer的过程,旨在解决项目间频繁切换PHP版本的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. 前言

2. 目标

3. 实现原理图

4. 环境准备

5. 实战演练

(1)创建挂载目录

(2)默认配置文件

(3)网络配置

(4)启动容器

(4)Nginx配置

(5)重启容器,进行验证即可

6. 扩展相关

(1)修改源

(2)扩展安装(以Redis为例)

(3)Composer安装

7.总结


1. 前言

        因工作中老旧项目基于PHP5.6环境,新项目基于PHP7.3 环境,在新项目开发过程还需要维护老旧项目,导致频繁切换PHP版本。前期曾使用MAMP,但在系统版本更新至 Monterey 12.4后MAMP无法正常使用,因此笔者尝试使用docker方式搭建项目所需环境,现将搭建过程及踩坑内容总结分享如下。

2. 目标

        1. 实现老项目在 PHP5.6 版本下运行

        2. 实现新项目在 PHP7.3 版本下运行

        3. 两个 PHP 版本可共存,无需手动切换

        4. 支持自定义扩展配置

        5. 支持Composer安装/更新依赖

3. 实现原理图

  1. 基于docker 构建PHP5.6、7.3的运行环境,负责具体PHP脚本的执行;
  2. 利用Nginx,结合不同的配置转发至项目所需的PHP环境中,多个环境共用一个Nginx;
  3. 为保障容器间可以互相访问,Nginx、PHP容器在同一个网络下

4. 环境准备

        1. Docker 环境,笔者环境为 Mac docker desktop  4.9.1 (81317) ,若无客户端,可以点击进入官网进行下载:客户端下载地址

        2. Nginx 镜像,笔者使用的为官方最新的镜像。

docker pull nginx

        3. PHP7.3 镜像,笔者镜像及版本为:php:7.3.33-fpm-alpine3.14,大家也可根据具体情况灵活调整。

docker pull php:7.3.33-fpm-alpine3.14

        4. PHP5.6 镜像,笔者镜像及版本为:php:5.6.40-fpm,大家也可根据具体情况灵活调整。

docker pull php:5.6.40-fpm

        5. 数据库笔者使用远程数据库,因此不在环境准备之列,如有需要大家可以拉取对应镜像即可。

5. 实战演练

(1)创建挂载目录

为了方便修改配置文件、查看日志,我们将Nginx、PHP的配置文件及日志文件挂载到宿主机,以下文件目录设置仅供参考,大家可根据自己的偏好灵活调整。

├── Docker
│   ├── nginx
│   │   ├── conf
│   │   │   ├── nginx.conf
│   │   │   └── vhost
│   │   └── logs
│   │       ├── access.log
│   │       ├── error.log
│   │       ├── test.access.log
│   │       └── test.access.log
│   └── php
│       ├── php5.6
│       │   ├── conf
│       │   └── log
│       └── php7.3
│           ├── conf
│           └── log

目录结构说明

1. Nginx 站点配置文件统一放置在vhost目录下,在nginx.conf中统一include。

2. php配置及日志文件根据版本进行设置不同的目录。

(2)默认配置文件

挂载卷时,若宿主机对应挂载目录下无配置文件挂载到容器后,容器内原有文件也会丢失,导致容器启动失败。因此在使用前我们可以创建一个临时容器,然后将容器内默认配置文件拷贝至宿主机作为挂载时的配置文件。

  • 创建Nginx临时容器并拷贝相关配置
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值