BunnyPHP与Docker集成:使用docker-compose搭建完整开发测试环境
【免费下载链接】bunnyPerformant pure-PHP AMQP (RabbitMQ) sync/async (ReactPHP) library项目地址: https://gitcode.com/gh_mirrors/bunny1/bunny
BunnyPHP是一个高性能的纯PHP AMQP(RabbitMQ)客户端库,支持同步和异步(基于ReactPHP)操作。本文将为您展示如何通过Docker和docker-compose快速搭建一个完整的BunnyPHP开发测试环境,让您能够立即开始消息队列应用的开发工作。
🚀 为什么选择Docker集成开发环境?
使用Docker搭建BunnyPHP开发环境具有以下优势:
- 环境一致性:确保所有开发者和CI/CD环境使用相同的配置
- 快速启动:一键启动完整的RabbitMQ和PHP环境
- 隔离性:避免污染本地开发环境
- 可重复性:轻松复制和分享开发环境配置
📦 环境准备与项目克隆
首先,您需要克隆BunnyPHP项目到本地:
git clone https://gitcode.com/gh_mirrors/bunny1/bunny cd bunny项目已经为您准备好了完整的Docker配置,位于项目根目录的docker-compose.yml文件中。
🐳 理解Docker配置结构
BunnyPHP的Docker配置包含两个主要服务:
RabbitMQ服务配置
在docker-compose.yml中,RabbitMQ服务配置如下:
rabbit_node_1: image: 'rabbitmq:3-management' environment: RABBITMQ_DEFAULT_USER: testuser RABBITMQ_DEFAULT_PASS: testpassword RABBITMQ_DEFAULT_VHOST: testvhost ports: - "5672:5672" # AMQP协议端口 - "5673:5673" # TLS加密端口 - "15672:15672" # 管理界面端口这个配置启动了一个完整的RabbitMQ 3.x版本,包含Web管理界面,预配置了测试用户和虚拟主机。
BunnyPHP开发容器配置
BunnyPHP开发容器基于PHP 8.2构建,配置位于docker/bunny/Dockerfile:
FROM php:8.2-cli RUN apt-get update && apt-get install -y git iputils-ping vim zip RUN docker-php-ext-configure pcntl --enable-pcntl \ && docker-php-ext-install pcntl RUN pecl install xdebug && docker-php-ext-enable xdebug容器中安装了必要的工具和扩展,包括:
- Git版本控制
- 网络诊断工具
- PCNTL扩展(进程控制)
- Xdebug调试工具
🚀 一键启动完整环境
启动完整的开发环境非常简单:
# 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f启动后,您将获得:
- RabbitMQ服务运行在本地5672端口
- RabbitMQ管理界面访问地址:http://localhost:15672
- BunnyPHP开发容器已就绪
🔧 进入开发容器进行开发
进入BunnyPHP开发容器开始编码:
# 进入容器 docker-compose exec bunny bash # 在容器内安装依赖 composer install # 运行测试 composer test容器内已经挂载了项目目录,您所做的任何修改都会立即生效。
📝 编写第一个BunnyPHP应用
让我们创建一个简单的生产者和消费者示例。首先,在项目根目录创建producer.php:
<?php require_once 'vendor/autoload.php'; use Bunny\Client; // 创建客户端连接 $client = new Client([ 'host' => 'rabbit_node_1', 'port' => 5672, 'user' => 'testuser', 'password' => 'testpassword', 'vhost' => 'testvhost', ]); // 连接到RabbitMQ $client->connect(); // 获取通道 $channel = $client->channel(); // 声明队列 $channel->queueDeclare('hello'); // 发送消息 $channel->publish('Hello BunnyPHP!', [], '', 'hello'); echo " [x] Sent 'Hello BunnyPHP!'\n"; // 关闭连接 $client->disconnect();接下来创建consumer.php:
<?php require_once 'vendor/autoload.php'; use Bunny\Client; // 创建客户端连接 $client = new Client([ 'host' => 'rabbit_node_1', 'port' => 5672, 'user' => 'testuser', 'password' => 'testpassword', 'vhost' => 'testvhost', ]); // 连接到RabbitMQ $client->connect(); // 获取通道 $channel = $client->channel(); // 声明队列 $channel->queueDeclare('hello'); echo " [*] Waiting for messages. To exit press CTRL+C\n"; // 定义消息处理回调 $channel->consume( function ($message) { echo " [x] Received '{$message->content}'\n"; }, 'hello' ); // 开始消费消息 $client->run();🧪 运行示例代码
在开发容器内运行您的第一个BunnyPHP应用:
# 在容器内运行生产者 php producer.php # 在另一个终端运行消费者 php consumer.php您将看到生产者发送消息,消费者接收消息的完整流程。
🔐 TLS/SSL安全连接配置
BunnyPHP支持TLS加密连接。查看tls/目录下的配置文件,了解如何配置安全连接:
- tls/ca.pem - CA证书
- tls/client.pem - 客户端证书
- tls/client.key - 客户端私钥
Docker环境已经预配置了TLS测试环境,您可以在5673端口使用加密连接。
🧪 运行测试套件
BunnyPHP提供了完整的测试套件,确保代码质量:
# 运行所有测试 composer test # 运行特定测试 vendor/bin/phpunit test/ClientTest.php # 运行性能基准测试 php benchmark/producer.php 10000 & php benchmark/consumer.php测试配置位于phpunit.xml,您可以根据需要调整测试参数。
📊 监控与管理
RabbitMQ管理界面
访问 http://localhost:15672 使用以下凭据登录:
- 用户名:testuser
- 密码:testpassword
在管理界面中,您可以:
- 查看队列状态和消息统计
- 监控连接和通道
- 管理交换机和绑定
- 查看系统资源使用情况
日志监控
# 查看RabbitMQ日志 docker-compose logs rabbit_node_1 # 查看BunnyPHP容器日志 docker-compose logs bunny # 实时监控所有服务日志 docker-compose logs -f🛠️ 高级配置选项
自定义环境变量
您可以修改.env文件或直接设置环境变量来自定义配置:
# 设置自定义RabbitMQ配置 export RABBITMQ_DEFAULT_USER=myuser export RABBITMQ_DEFAULT_PASS=mypassword docker-compose up -d网络配置
Docker Compose创建了一个专用网络main,确保服务间通信安全隔离。您可以在docker-compose.yml中修改网络配置。
持久化存储
如果需要持久化RabbitMQ数据,可以添加卷配置:
rabbit_node_1: volumes: - rabbitmq_data:/var/lib/rabbitmq volumes: rabbitmq_data:🚦 开发工作流最佳实践
1. 代码编辑与测试循环
# 在本地编辑代码 # 代码自动同步到容器 # 在容器内运行测试 docker-compose exec bunny composer test # 修复问题后重新测试2. 调试配置
Xdebug已经预装在开发容器中。配置您的IDE连接到容器进行调试:
- 主机:localhost
- 端口:9003
- IDE密钥:PHPSTORM
3. 依赖管理
# 添加新依赖 docker-compose exec bunny composer require package/name # 更新依赖 docker-compose exec bunny composer update # 检查依赖安全 docker-compose exec bunny composer audit🔧 故障排除
常见问题及解决方案
连接失败
# 检查RabbitMQ服务状态 docker-compose ps # 查看服务日志 docker-compose logs rabbit_node_1 # 测试网络连接 docker-compose exec bunny ping rabbit_node_1权限问题
# 确保文件权限正确 chmod -R 755 . # 重建容器 docker-compose down docker-compose build --no-cache docker-compose up -d端口冲突
# 修改docker-compose.yml中的端口映射 ports: - "5674:5672" # 将外部端口改为5674
📚 学习资源与示例
BunnyPHP项目提供了丰富的学习资源:
教程目录
- tutorial/1-hello-world/ - 基础Hello World示例
- tutorial/2-work-queues/ - 工作队列模式
- tutorial/3-publish-subscribe/ - 发布/订阅模式
- tutorial/4-routing/ - 路由模式
- tutorial/5-topics/ - 主题模式
- tutorial/6-rpc/ - RPC模式
实用示例
- examples/wait-for-connection.php - 等待RabbitMQ连接就绪
- examples/worker.php - 工作进程示例
- examples/tls/ - TLS加密连接示例
🎯 总结
通过Docker和docker-compose,您可以快速搭建一个完整的BunnyPHP开发测试环境。这个环境提供了:
- 完整的RabbitMQ服务:包含管理界面和预配置
- 优化的PHP开发容器:包含所有必要工具和扩展
- 一键启动:简化环境配置流程
- 隔离的开发环境:避免污染本地系统
- 完整的测试套件:确保代码质量
现在您已经拥有了一个功能齐全的BunnyPHP开发环境,可以开始构建高效的消息队列应用了。无论是简单的消息传递还是复杂的分布式系统,BunnyPHP与Docker的结合都将为您提供稳定可靠的开发体验。
记住,良好的开发环境是高效开发的基础。利用这个Docker化的环境,您可以专注于业务逻辑的实现,而不必担心环境配置的复杂性。Happy coding! 🚀
【免费下载链接】bunnyPerformant pure-PHP AMQP (RabbitMQ) sync/async (ReactPHP) library项目地址: https://gitcode.com/gh_mirrors/bunny1/bunny
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考