Docker Compose 部署 RabbitMQ 用于开发调试
本文将介绍如何通过 Docker Compose 快速部署 RabbitMQ 消息队列服务,适用于本地开发和调试场景。RabbitMQ 是一个开源的消息代理,支持多种消息协议,在分布式系统中用于解耦、扩展和处理异步任务。
环境要求
- Docker 19.03 或更高版本
- Docker Compose 1.27.0 或更高版本
Docker Compose 配置详解
以下是
docker-compose.yml
文件配置,用于启动一个带管理插件的 RabbitMQ 容器,设置端口、环境变量、数据挂载及网络。
docker-compose.yml
services:rabbitmq:image:"rabbitmq:3.13.6-management"restart: always
privileged:trueports:-"35672:5672"# RabbitMQ standard port-"45672:15672"# RabbitMQ management plugin portcontainer_name: rabbitmq
hostname: rabbitmq
environment:- RABBITMQ_ERLANG_COOKIE=secret_cookie # Set a custom Erlang cookie for clustering- RABBITMQ_DEFAULT_USER=admin # Set RabbitMQ admin user- RABBITMQ_DEFAULT_PASS=_admin123 # Set RabbitMQ admin passwordnetworks:- custom
volumes:- ./storage:/var/lib/rabbitmq
networks:custom:external:truedriver: bridge
配置说明
- 镜像与容器:- 使用了带有管理插件的
rabbitmq:3.13.6-management
官方镜像,支持通过 Web UI 管理 RabbitMQ。-container_name
设置为rabbitmq
,便于管理。-hostname
设置为rabbitmq
,用于容器内的主机名解析。 - 端口映射:-
35672:5672
将主机的 35672 端口映射到容器的 5672 端口,5672 是 RabbitMQ 的标准 AMQP 端口,应用程序可以通过此端口与 RabbitMQ 进行通信。-45672:15672
将主机的 45672 端口映射到容器的 15672 端口,15672 是 RabbitMQ 管理插件的 Web UI 端口,用户可以通过浏览器访问管理界面。 - 环境变量:-
RABBITMQ_ERLANG_COOKIE
设置自定义的 Erlang Cookie,用于集群环境下的节点通信。-RABBITMQ_DEFAULT_USER
和RABBITMQ_DEFAULT_PASS
设置 RabbitMQ 的默认管理员用户名和密码。在本文中,用户名为admin
,密码为_admin123
。 - 网络配置:- 使用名为
custom
的外部网络,确保容器与其他服务可以互通。 - 挂载卷:-
./storage:/var/lib/rabbitmq
挂载本地./storage
目录到容器内部的/var/lib/rabbitmq
,用于存储 RabbitMQ 的持久化数据和日志,确保即使容器重启,数据不会丢失。
启动 RabbitMQ
确保已经安装了 Docker 和 Docker Compose,并在项目根目录下创建了
docker-compose.yml
文件。
- 使用以下命令启动 RabbitMQ 服务:
docker-compose up -d
- 启动完成后,可以通过以下命令查看容器状态:
docker-composeps
输出示例:Name Command State Ports-----------------------------------------------------------------------------------rabbitmq docker-entrypoint.sh rabbi ... Up 0.0.0.0:35672->5672/tcp, 0.0.0.0:45672->15672/tcp
- 访问 RabbitMQ 管理界面:打开浏览器,访问
http://localhost:45672
,输入admin
作为用户名,_admin123
作为密码,登录 RabbitMQ 的 Web 管理界面。 - 使用
docker exec
进入容器内部:dockerexec-it rabbitmq /bin/bash
你可以通过此命令进入容器内的 Shell 进行进一步操作或调试。
常见问题
- 端口冲突:确保宿主机的端口
35672
和45672
未被其他服务占用,否则需要在docker-compose.yml
中修改这些端口。 - 数据持久化:请确保挂载的本地存储目录
./storage
存在且具有适当的读写权限,否则 RabbitMQ 数据可能无法持久化。
总结
通过 Docker Compose,我们可以轻松部署并运行一个带有管理插件的 RabbitMQ 实例,非常适合用于开发和调试。本文中的配置允许我们快速启动 RabbitMQ,并通过 Web UI 方便地管理消息队列、查看队列状态、监控系统性能等。在生产环境中,你可以扩展该配置,加入更多节点,构建高可用的 RabbitMQ 集群。
版权归原作者 Ceramist 所有, 如有侵权,请联系我们删除。