使用Docker Desktop与docker-compose.yml可快速搭建轻量、隔离、可复现的PHP+Nginx环境:仅需安装适配芯片的Docker,配置国内镜像源与4GB内存,编写极简docker-compose.yml(含Nginx、PHP-FPM、MySQL三服务)、nginx.conf和php.ini,挂载本地代码,执行docker-compose up -d即可运行,支持热更新与一键启停。
直接用 docker desktop + docker-compose.yml 启一个轻量、隔离、可复现的 php+nginx 环境,不装额外面板、不改系统 php、不碰本地 nginx,代码在 mac 上编辑,容器只跑服务——这才是真正“极简又贴近生产”的做法。
基础准备:装对 Docker,调好加速
去 Docker 官网 下载 macOS 版本,注意芯片类型:Apple Silicon(M1/M2/M3)选 ARM64 版,Intel 芯片选 Intel 版。安装后启动,顶部出现鲸鱼图标即就绪。
- 打开 Preferences → Resources → Memory,设为 4GB(多服务够用,不卡顿)
- 进入 Preferences → Docker Engine,在 JSON 配置里加入国内镜像源(避免拉镜像超时):
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn", "https://dockerproxy.cn"]}
```
点 Apply & Restart,之后 docker run hello-world 能成功打印即配置完成。
最小化 docker-compose.yml:三行服务,零冗余
在项目根目录(如 ~/Sites/myapp)新建 docker-compose.yml,只保留 Nginx、PHP-FPM、MySQL 三个必需服务,全部用官方 Alpine 镜像减小体积:
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]
php:
image: php:8.2-fpm-alpine
volumes:
- ./:/var/www/html
- ./php.ini:/usr/local/etc/php/php.ini
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: devpass
MYSQL_DATABASE: myapp
volumes:
- mysql-data:/var/lib/mysql
ports: ["3307:3306"]
volumes:
mysql-data:
```
说明:代码通过 ./ 直接挂载进两个容器,改保存即生效;MySQL 映射到 3307,避开本机可能占用的 3306。
立即学习“PHP免费学习笔记(深入)”;
开箱即用的 nginx.conf 和 php.ini
新建 nginx.conf,支持 PHP 解析 + SPA 回退(适合 Vue/React 项目):
server {
listen 80;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
```
新建 php.ini,启用开发友好设置:
display_errors = On
error_reporting = E_ALL
log_errors = On
opcache.enable=1
opcache.memory_consumption=128
```
这两份配置文件体积小、无多余指令,改完不用重启容器,只需 docker-compose exec web nginx -s reload 即可生效。
一键启停与快速验证
终端进入项目目录,执行:
-
docker-compose up -d—— 启动全部服务(后台运行) -
echo '<?php echo "OK: PHP " . PHP_VERSION; ?>' > index.php—— 写个测试页 - 浏览器打开 https://www.php.cn/link/cbb686245ece57c9827c4bc0d0654a8e,看到版本信息即成功
-
docker-compose logs -f php查看 PHP 日志,docker-compose ps看状态 -
docker-compose down彻底关闭,不留残留
整个流程不依赖任何全局工具链,每个项目可独立拥有自己的 docker-compose.yml 和配置,删掉目录即环境清空,干净、可控、易迁移。



















