使用Docker Compose部署php-crud-api项目的完整指南
2025-07-09 05:05:05作者:范垣楠Rhoda
项目概述
php-crud-api是一个基于PHP的轻量级RESTful API框架,能够自动为MySQL数据库生成CRUD(创建、读取、更新、删除)API接口。它特别适合快速构建后端服务,无需编写大量重复的CRUD代码。
Docker Compose配置解析
下面我们将深入分析这个Docker Compose配置文件,它定义了两个服务:数据库服务和Web服务器服务。
1. 数据库服务配置
database:
image: mysql:8.0
container_name: database
restart: always
environment:
- MYSQL_ROOT_PASSWORD=php-crud-api
- MYSQL_DATABASE=php-crud-api
- MYSQL_USER=php-crud-api
- MYSQL_PASSWORD=php-crud-api
volumes:
- ./tests/fixtures/blog_mysql.sql:/docker-entrypoint-initdb.d/blog_mysql.sql
关键点解析:
-
MySQL 8.0镜像:使用官方MySQL 8.0镜像,确保数据库服务的稳定性和兼容性。
-
自动重启策略:设置
restart: always
确保数据库服务在意外停止后自动重启。 -
安全配置:
- 设置了root密码
- 创建了专用数据库和用户
- 所有凭证都使用"php-crud-api"作为密码(生产环境应使用更复杂的密码)
-
数据初始化:
- 通过挂载SQL脚本到
/docker-entrypoint-initdb.d/
目录,容器启动时会自动执行该脚本初始化数据库结构 - 这里使用的是项目自带的测试用博客数据库结构
- 通过挂载SQL脚本到
生产环境建议:
- 注释掉的端口映射(33066:3306)在开发时可用于外部连接调试
- 考虑使用命名卷持久化数据库数据,避免容器删除后数据丢失
2. Web服务器服务配置
webserver:
container_name: webserver
build:
context: ./
environment:
- PHP_CRUD_API_ADDRESS=database
- PHP_CRUD_API_MAPPING=abc_posts.abc_id=posts.id,abc_posts.abc_user_id=posts.user_id,abc_posts.abc_category_id=posts.category_id,abc_posts.abc_content=posts.content
ports:
- "8080:80"
depends_on:
- database
关键点解析:
-
构建方式:使用当前目录下的Dockerfile构建镜像,而不是使用预构建镜像,这允许自定义Web服务器配置。
-
环境变量配置:
PHP_CRUD_API_ADDRESS
:指定数据库服务地址,这里使用服务名"database",Docker内部网络会自动解析PHP_CRUD_API_MAPPING
:定义了表字段的映射关系,这在处理遗留数据库或需要重命名字段时非常有用
-
端口映射:将容器内的80端口映射到主机的8080端口,可通过
http://localhost:8080
访问API -
依赖关系:通过
depends_on
确保数据库服务先启动
高级配置选项:
- 注释掉的配置项展示了更多可配置参数,如:
- 指定数据库驱动类型
- 设置数据库端口
- 配置数据库名称、用户名和密码
- 开启调试模式
- 在生产环境中,可能需要挂载代码卷实现热更新
部署流程
-
准备环境:
- 确保已安装Docker和Docker Compose
- 克隆项目代码到本地
-
启动服务:
docker-compose up -d
-
验证服务:
- 访问
http://localhost:8080
应该能看到API响应 - 检查数据库是否初始化成功:
docker exec -it database mysql -u php-crud-api -p
- 访问
-
停止服务:
docker-compose down
常见问题解决
-
端口冲突:如果8080端口被占用,修改
ports
配置中的主机端口号 -
数据库连接问题:检查数据库容器是否正常启动,环境变量配置是否正确
-
初始化脚本执行失败:确认SQL文件路径正确,文件格式无误
最佳实践建议
-
安全加固:
- 修改默认密码
- 限制数据库外部访问
- 考虑添加API认证层
-
性能优化:
- 为MySQL容器配置适当资源限制
- 启用PHP OPcache
- 考虑添加Redis缓存层
-
监控与日志:
- 配置日志收集
- 添加健康检查端点
- 设置资源使用监控
通过这个Docker Compose配置,php-crud-api项目可以快速部署并运行,为开发者提供了一个功能完整的RESTful API后端服务。这种容器化的部署方式不仅简化了环境配置,也提高了应用的可移植性和可维护性。