5.1 KiB
5.1 KiB
项目总结 - Common Nginx + PHP-FPM Docker 镜像
🎯 项目目标
创建一个通用的 nginx + php-fpm Docker 镜像,满足以下需求:
- ✅ 从外部访问80端口
- ✅ 自动转发PHP请求到php-fpm执行
- ✅ 其他资源作为静态资源处理
- ✅ 提供默认配置文件
- ✅ 支持外部配置覆盖
📦 项目结构
common-nginx-fpm/
├── Dockerfile # 主构建文件 (Alpine版本)
├── docker-compose.yaml # Docker Compose配置
├── docker-entrypoint.sh # 启动脚本
├── start.sh # 快速启动脚本
├── .env.example # 环境变量示例
├── README.md # 详细使用说明
├── SECURITY_REPORT.md # 安全扫描报告
├── PROJECT_SUMMARY.md # 项目总结 (本文件)
├── config/ # 配置文件目录
│ ├── nginx.conf # Nginx默认配置
│ ├── php.ini # PHP默认配置
│ ├── www.conf # PHP-FPM池配置
│ └── supervisord.conf # 进程管理配置
└── src/ # 示例代码目录
└── index.php # 示例PHP应用
🔧 技术实现
基础架构
- 基础镜像:
php:8.4-fpm-alpine(安全优化版本) - Web服务器: Nginx
- PHP处理: PHP-FPM 8.4
- 进程管理: Supervisor
- 系统: Alpine Linux (安全性更高)
核心功能
- Web服务: Nginx监听80端口,处理HTTP请求
- PHP处理: PHP文件通过FastCGI转发给PHP-FPM处理
- 静态资源: CSS、JS、图片等直接由Nginx服务
- 配置覆盖: 支持通过volume挂载覆盖默认配置
- 健康检查: 提供
/health端点用于监控
PHP扩展
预装以下常用扩展:
- PDO MySQL
- PDO PostgreSQL
- PostgreSQL
- MySQLi
- OPcache
🔒 安全特性
安全扫描结果
| 版本 | 严重漏洞 | 高危漏洞 | 总漏洞数 | 镜像大小 |
|---|---|---|---|---|
| Alpine | 0 | 0 | 0 | 754MB |
| Debian | 3 | 149 | 152 | 569MB |
安全加固措施
- 基础镜像: 使用Alpine Linux减少攻击面
- 用户权限: 使用非root用户运行服务
- 文件权限: 合理设置文件和目录权限
- 配置安全: 禁用危险PHP函数,设置访问限制
- 运行时安全: 支持只读文件系统和资源限制
🚀 使用方式
快速启动
# 开发环境
./start.sh dev
# 生产环境
./start.sh prod
Docker Compose
# 复制环境配置
cp .env.example .env
# 启动服务
docker-compose up -d
直接使用Docker
# 构建镜像
docker build -t common-nginx-fpm-alpine .
# 运行容器
docker run -d -p 80:80 -v ./src:/var/www/html common-nginx-fpm-alpine
📊 性能特性
资源配置
- 默认内存限制: 512MB
- 默认CPU限制: 1.0核心
- PHP-FPM进程: 动态管理,最大50个子进程
- Nginx工作进程: 自动检测CPU核心数
优化配置
- OPcache: 启用PHP字节码缓存
- Gzip压缩: 启用静态资源压缩
- FastCGI缓存: 优化PHP处理性能
- Keep-Alive: 启用HTTP连接复用
🔧 配置管理
支持的配置覆盖
- Nginx配置:
/etc/nginx/nginx.conf - PHP配置:
/usr/local/etc/php/conf.d/custom.ini - PHP-FPM配置:
/usr/local/etc/php-fpm.d/custom.conf
环境变量配置
通过.env文件支持以下配置:
- 项目名称和端口设置
- 代码路径和挂载模式
- 数据库连接信息
- 安全和性能参数
📈 扩展性
数据库支持
- MySQL 8.0
- PostgreSQL 15
- Redis 7
管理工具
- phpMyAdmin (开发环境)
- 健康检查端点
- 日志聚合
部署支持
- 开发环境配置
- 生产环境配置
- 容器编排支持
🎉 项目成果
完成的功能
✅ 通用nginx+php-fpm镜像构建 ✅ 安全漏洞扫描和修复 ✅ Docker Compose完整配置 ✅ 环境变量管理 ✅ 快速启动脚本 ✅ 示例应用和文档 ✅ 安全配置和最佳实践
技术亮点
- 零安全漏洞: Alpine版本通过安全扫描
- 配置灵活: 支持多种配置覆盖方式
- 使用简单: 一键启动脚本和详细文档
- 生产就绪: 包含安全加固和性能优化
- 扩展性强: 支持多种数据库和缓存
📝 使用建议
生产环境
- 使用Alpine版本 (
common-nginx-fpm-alpine) - 启用只读文件系统和资源限制
- 定期更新镜像和扫描安全漏洞
- 使用强密码和安全配置
开发环境
- 可选择Debian版本 (如需glibc兼容性)
- 启用开发工具 (phpMyAdmin等)
- 使用读写挂载模式便于开发
监控和维护
- 定期查看容器日志
- 监控资源使用情况
- 备份重要数据和配置
- 建立更新和部署流程
🔮 未来改进
可能的增强功能
- 添加更多PHP扩展选项
- 支持多版本PHP切换
- 集成CI/CD流水线
- 添加监控和告警
- 支持集群部署
- 性能基准测试
社区贡献
欢迎提交Issue和Pull Request来改进这个项目!