背景
本地开发环境与生产环境差异过大是一个长期痛点。每次在本地调试通过、推上服务器又出问题,往往是因为 PHP 版本、MySQL 配置、Nginx 路径不一致。Docker Compose 能很大程度解决这个问题。
目录结构
project/
├── docker-compose.yml
├── nginx/
│ └── default.conf
├── php/
│ └── Dockerfile
└── src/
└── index.php
核心配置
php-fpm 容器与 nginx 容器通过内部网络通信,MySQL 数据卷单独挂载避免容器重建数据丢失。健康检查确保依赖顺序正确。
常见问题
- php-fpm 以 www-data 用户运行,挂载卷的权限需要对齐
- nginx upstream 中使用服务名而不是 IP
- MySQL 首次初始化慢,需配置 depends_on condition: service_healthy
小结
这套配置在 M1 Mac 和 Linux 服务器上都验证通过,基本可以直接复用。