BunnyPHP与Docker集成:使用docker-compose搭建完整开发测试环境 BunnyPHP与Docker集成使用docker-compose搭建完整开发测试环境【免费下载链接】bunnyPerformant pure-PHP AMQP (RabbitMQ) sync/async (ReactPHP) library项目地址: https://gitcode.com/gh_mirrors/bunny1/bunnyBunnyPHP是一个高性能的纯PHP AMQPRabbitMQ客户端库支持同步和异步基于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/DockerfileFROM 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:15672BunnyPHP开发容器已就绪 进入开发容器进行开发进入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 CTRLC\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_USERmyuser export RABBITMQ_DEFAULT_PASSmypassword 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端口9003IDE密钥PHPSTORM3. 依赖管理# 添加新依赖 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),仅供参考