在macOS上用Docker搭建高速本地PHP开发环境的关键是容器仅负责隔离运行时(PHP-FPM、Nginx、MySQL),本地完成代码编辑与热重载,通过volume实时同步实现毫秒生效;需配置docker-compose.yml定义最小服务栈、nginx.conf支持PHP解析与SPA回退、php.ini启用开发参数,并用docker-compose up -d一键启停。
在 macos 上用 docker 搭建高速本地 php 测试开发环境,关键不是“把整个开发流程塞进容器”,而是让容器只做它最擅长的事:隔离运行时、复现生产行为、快速启停验证。本地代码编辑、调试、热重载仍由 macos 原生完成,docker 仅负责托管 php-fpm + nginx(或 apache)+ mysql/redis 等服务,通过 volume 实时同步代码,实现毫秒级修改即生效。
1. 基础准备:轻量启动,避免资源卡顿
确保已安装 Docker Desktop(Apple Silicon 用户选原生版本),首次启动后建议做两件事:
- 偏好设置 → Resources → 内存分配调至 4GB–6GB(PHP 多服务并行需一定余量)
- 偏好设置 → Docker Engine → 添加国内镜像加速地址(如 https://docker.mirrors.ustc.edu.cn),大幅缩短镜像拉取时间
2. 用 docker-compose 定义最小可用栈
在项目根目录(如 ~/Projects/my-php-app)新建 docker-compose.yml,不依赖宝塔等重型面板,直连核心服务:
version: '3.8'
services:
web:
image: nginx:alpine
ports: ["8080:80"]
volumes:
- ./:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on: [php]
<p>php:
image: php:8.2-fpm-alpine
volumes:</p><ul><li>./:/var/www/html</li><li>./php.ini:/usr/local/etc/php/php.ini</li></ul><p>mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: devpass
MYSQL_DATABASE: myapp
volumes:</p><ul><li>mysql-data:/var/lib/mysql
ports: ["3307:3306"]</li></ul><p>volumes:
mysql-data:说明:Web 和 PHP 容器共享同一份代码目录(./),改完保存立刻可见;MySQL 端口映射为 3307,避开本机可能占用的 3306。
3. 配置即开即用的 Nginx + PHP-FPM
新建 nginx.conf,支持 PHP 脚本解析和 SPA 路由回退:
立即学习“PHP免费学习笔记(深入)”;
server {
listen 80;
root /var/www/html;
index index.php;
<pre class="brush:php;toolbar:false;">location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}}
再新建 php.ini(可选但推荐),启用常用扩展并调高开发友好参数:
display_errors = On error_reporting = E_ALL upload_max_filesize = 64M post_max_size = 64M extension=mysqli extension=pdo_mysql
4. 启动、验证与日常使用
终端进入项目目录,三步到位:
- docker-compose up -d —— 后台启动全部服务
- echo "" > index.php —— 快速写个测试页
- 浏览器打开 http://localhost:8080,看到 PHP 版本即成功
后续开发中,你只需:
- 在本地用 VS Code 编辑 index.php 或其他文件,保存即刷新生效
- 需要切换 PHP 版本?改 docker-compose.yml 中 php 服务的 image 行(如 php:7.4-fpm-alpine),执行 docker-compose up -d --build php
- 查 MySQL?命令行运行 docker exec -it my-php-app-mysql-1 mysql -u root -pdevpass myapp
整个流程无需重启系统、不污染本地环境、换电脑复制目录+运行一条命令即可还原,真正兼顾速度与一致性。



















