common-nginx-fpm/PROJECT_SUMMARY.md
Caijinglong 13612d1724
构建
Signed-off-by: Caijinglong <cjl_spy@163.com>
2025-06-25 17:38:29 +08:00

5.1 KiB
Raw Permalink Blame History

项目总结 - 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 (安全性更高)

核心功能

  1. Web服务: Nginx监听80端口处理HTTP请求
  2. PHP处理: PHP文件通过FastCGI转发给PHP-FPM处理
  3. 静态资源: CSS、JS、图片等直接由Nginx服务
  4. 配置覆盖: 支持通过volume挂载覆盖默认配置
  5. 健康检查: 提供/health端点用于监控

PHP扩展

预装以下常用扩展:

  • PDO MySQL
  • PDO PostgreSQL
  • PostgreSQL
  • MySQLi
  • OPcache

🔒 安全特性

安全扫描结果

版本 严重漏洞 高危漏洞 总漏洞数 镜像大小
Alpine 0 0 0 754MB
Debian 3 149 152 569MB

安全加固措施

  1. 基础镜像: 使用Alpine Linux减少攻击面
  2. 用户权限: 使用非root用户运行服务
  3. 文件权限: 合理设置文件和目录权限
  4. 配置安全: 禁用危险PHP函数设置访问限制
  5. 运行时安全: 支持只读文件系统和资源限制

🚀 使用方式

快速启动

# 开发环境
./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连接复用

🔧 配置管理

支持的配置覆盖

  1. Nginx配置: /etc/nginx/nginx.conf
  2. PHP配置: /usr/local/etc/php/conf.d/custom.ini
  3. PHP-FPM配置: /usr/local/etc/php-fpm.d/custom.conf

环境变量配置

通过.env文件支持以下配置:

  • 项目名称和端口设置
  • 代码路径和挂载模式
  • 数据库连接信息
  • 安全和性能参数

📈 扩展性

数据库支持

  • MySQL 8.0
  • PostgreSQL 15
  • Redis 7

管理工具

  • phpMyAdmin (开发环境)
  • 健康检查端点
  • 日志聚合

部署支持

  • 开发环境配置
  • 生产环境配置
  • 容器编排支持

🎉 项目成果

完成的功能

通用nginx+php-fpm镜像构建 安全漏洞扫描和修复 Docker Compose完整配置 环境变量管理 快速启动脚本 示例应用和文档 安全配置和最佳实践

技术亮点

  1. 零安全漏洞: Alpine版本通过安全扫描
  2. 配置灵活: 支持多种配置覆盖方式
  3. 使用简单: 一键启动脚本和详细文档
  4. 生产就绪: 包含安全加固和性能优化
  5. 扩展性强: 支持多种数据库和缓存

📝 使用建议

生产环境

  • 使用Alpine版本 (common-nginx-fpm-alpine)
  • 启用只读文件系统和资源限制
  • 定期更新镜像和扫描安全漏洞
  • 使用强密码和安全配置

开发环境

  • 可选择Debian版本 (如需glibc兼容性)
  • 启用开发工具 (phpMyAdmin等)
  • 使用读写挂载模式便于开发

监控和维护

  • 定期查看容器日志
  • 监控资源使用情况
  • 备份重要数据和配置
  • 建立更新和部署流程

🔮 未来改进

可能的增强功能

  • 添加更多PHP扩展选项
  • 支持多版本PHP切换
  • 集成CI/CD流水线
  • 添加监控和告警
  • 支持集群部署
  • 性能基准测试

社区贡献

欢迎提交Issue和Pull Request来改进这个项目