1. 为什么要在macOS上通过Docker部署Nginx+PHP?
作为macOS开发者,我这些年越来越依赖Docker来搭建本地开发环境。传统方式直接在macOS安装Nginx和PHP会遇到各种依赖冲突、版本管理难题。上周帮同事排查一个PHP版本不兼容问题,发现他本地同时安装了5.6和7.4版本,环境变量混乱不堪。而用Docker容器化部署,每个项目都能拥有独立的运行环境,就像给每个应用分配了专属的"房间"。
这种部署方式特别适合:
- 需要快速切换PHP版本的开发者(比如同时维护Laravel 5和Laravel 8项目)
- 团队协作时保证环境一致性(再也不会出现"在我机器上是好的"这种对话)
- 需要隔离生产环境配置的运维人员(用容器模拟生产环境)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与Docker安装
2.1 选择适合的Docker版本
目前macOS上有两种主流Docker方案:
- Docker Desktop:官方图形化工具(推荐新手使用)
- Colima:命令行方案(适合追求轻量化的开发者)
我建议从Docker Desktop开始,虽然它会占用约1GB内存,但提供了直观的GUI管理界面。安装步骤:
bash复制# 使用Homebrew安装(需提前安装Homebrew)
brew install --cask docker
# 或者直接下载dmg安装包
# 官网下载地址:https://www.docker.com/products/docker-desktop/
安装完成后,在Launchpad中打开Docker应用,菜单栏会出现鲸鱼图标。首次启动需要输入系统密码来创建网络接口。
注意:如果公司网络有严格代理设置,需要在Preferences → Resources → Proxies中配置代理服务器,否则镜像拉取会失败。
2.2 验证Docker安装
打开终端运行:
bash复制docker --version
# 应输出类似:Docker version 20.10.17, build 100c701
docker-compose --version
# 输出:Docker Compose version v2.6.0
如果看到版本号说明安装成功。建议执行一个测试容器:
bash复制docker run hello-world
这个命令会:
- 自动从Docker Hub拉取hello-world镜像
- 创建临时容器并执行
- 输出欢迎信息后自动退出
3. 构建Nginx+PHP容器方案设计
3.1 单容器 vs 多容器架构
常见有两种部署方式:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 单容器(Nginx+PHP同容器) | 部署简单,调试方便 | 不符合单一职责原则,扩容困难 | 快速原型开发 |
