phpEnv是一款常用的本地PHP环境集成工具,能够便捷地管理PHP、MySQL、Nginx等服务版本,但在需要运行依赖特定系统环境或者多服务隔离的项目时,搭配Docker使用可以大幅提升开发效率。下面详细介绍phpEnv环境下安装Docker以及两者结合使用的具体方法。

phpEnv环境下安装Docker的步骤
Windows系统安装Docker
如果你的phpEnv运行在Windows系统上,首先需要确认系统满足Docker运行要求,Windows 10及以上版本且开启Hyper-V功能。打开Docker官网下载Docker Desktop安装包,安装过程中勾选使用WSL2作为后端引擎的选项,安装完成后重启电脑,启动Docker Desktop,等待状态栏图标显示正常运行即可。
可以通过以下命令验证Docker是否安装成功:
docker --version # 输出类似 Docker version 24.0.6, build ed223bc 则表示安装成功
macOS系统安装Docker
macOS用户可以直接下载Docker Desktop for Mac安装包,拖动到应用程序文件夹后启动,首次启动需要输入系统密码授权,启动完成后在终端执行上述验证命令,确认Docker版本信息即可。
Linux系统安装Docker
Linux系统下可以通过官方脚本快速安装Docker,执行以下命令:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh # 安装完成后启动Docker服务 systemctl start docker # 设置开机自启 systemctl enable docker
phpEnv和Docker结合使用的常见场景
用Docker补充phpEnv缺少的服务
phpEnv默认集成了常见的PHP开发相关服务,但如果需要运行Redis、Elasticsearch等额外服务,不需要在本地手动安装,可以直接通过Docker拉取对应镜像运行。比如需要启动Redis服务,执行以下命令:
# 拉取Redis镜像 docker pull redis:7.0 # 启动Redis容器,映射本地6379端口 docker run -d -p 6379:6379 --name local_redis redis:7.0
之后在phpEnv管理的PHP项目中,只需要配置Redis连接地址为127.0.0.1,端口6379即可正常使用Redis服务。
用Docker运行不同PHP版本的项目
虽然phpEnv支持切换PHP版本,但如果同时需要运行依赖PHP5.6和PHP8.2的两个项目,频繁切换版本会比较麻烦。可以用Docker单独运行特定PHP版本的容器,和phpEnv管理的PHP服务互不干扰。比如运行PHP5.6的项目容器:
# 拉取PHP5.6镜像 docker pull php:5.6-fpm # 启动PHP5.6容器,挂载本地项目目录 docker run -d -p 9000:9000 -v /path/to/your/project:/var/www/html --name php56_container php:5.6-fpm
其中/path/to/your/project需要替换为你本地phpEnv管理的项目实际路径,之后配置phpEnv的Nginx服务,将对应项目的PHP处理转发到9000端口即可。
用Docker实现环境一致性
团队开发时经常遇到本地环境和线上环境不一致导致的问题,可以用Docker编写Dockerfile和docker-compose.yml文件,定义完整的项目运行环境,团队成员只需要拉取配置和镜像就能快速搭建和线上一致的环境,phpEnv可以作为本地管理这些Docker配置和服务的辅助工具。
以下是一个简单的docker-compose.yml示例,用于启动PHP和MySQL服务:
version: '3'
services:
php:
image: php:8.1-fpm
volumes:
- ./project:/var/www/html
ports:
- "9001:9000"
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
ports:
- "3307:3306"
volumes:
- ./mysql_data:/var/lib/mysql
在项目目录下执行docker-compose up -d就能启动这两个服务,phpEnv可以负责本地端口映射的管理,避免端口冲突。
注意事项
- Docker容器和phpEnv管理的服务如果都使用相同的端口,会出现端口占用冲突,启动前需要确认端口未被占用,或者修改映射端口。
- Docker容器内的数据默认是临时的,如果需要持久化存储数据,需要通过
-v参数挂载本地目录到容器内。 - Windows系统下如果phpEnv的项目目录在C盘,Docker挂载目录时需要确认该目录已经添加到Docker Desktop的文件共享列表中,否则会出现权限问题。
合理搭配phpEnv和Docker的使用,能够充分发挥两者的优势,既保留了phpEnv操作简单的特点,又能利用Docker的灵活性和隔离性,让本地开发环境管理更加高效。