一、方案概述
本文提供完整 docker-compose-rabbitmq.yml 编排脚本,基于 RabbitMQ 3.12.9 官方镜像快速搭建消息中间件,内置管理插件持久化配置、自定义登录账号、端口映射、自动重启与专属网桥网络,适配 Windows Docker Desktop 开发环境,一条命令即可完成服务部署,自带 Web 可视化管理后台,方便开发调试消息队列。
核心能力:
- AMQP 通信端口 5672 供业务程序收发消息;
- 15672 端口提供 Web 管理面板,可视化管理交换机、队列、绑定关系;
- 持久化插件配置,容器重启后管理插件自动启用;
- 自定义管理员账号密码,容器异常自动重启保障服务稳定。
二、完整 Compose 配置文件
文件名称:docker-compose-rabbitmq.yml
bash
# 后台启动命令:docker compose -f docker-compose-rabbitmq.yml up -d
version: '3.9'
services:
rabbitmq:
image: rabbitmq:3.12.9
container_name: rabbitmq
restart: always
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
command: rabbitmq-server
volumes:
- C:/docker/rabbitmq/plugins/enabled_plugins:/etc/rabbitmq/enabled_plugins
networks:
my-network:
driver: bridge
三、配置项详细解析
1. Compose 版本声明
version: '3.9' 适配主流 Docker Desktop 版本,兼容端口映射、数据挂载、自定义网络等全部常用语法。
2. RabbitMQ 核心服务配置
| 配置参数 | 功能说明 |
|---|---|
| image: rabbitmq:3.12.9 | 锁定稳定版 RabbitMQ 镜像,规避新版本兼容性问题 |
| container_name: rabbitmq | 固定容器名称,简化 docker exec、docker logs 等运维命令 |
| restart: always | 容器崩溃、宿主机重启后自动重启,保证服务常驻 |
| ports 端口映射 | 5672:RabbitMQ AMQP 标准通信端口,项目代码连接使用15672:Web 管理后台访问端口 |
| environment 环境变量 | RABBITMQ_DEFAULT_USER:默认管理员账号 adminRABBITMQ_DEFAULT_PASS:默认管理员密码 admin |
| command: rabbitmq-server | 启动 RabbitMQ 主服务程序 |
| volumes 挂载 | Windows 本地路径 C:/docker/rabbitmq/plugins/enabled_plugins 挂载至容器插件配置目录,持久化开启 rabbitmq_management 管理插件,容器重建无需重复执行插件启用命令 |
3. 自定义网桥网络 my-network
创建独立 bridge 网络,若后续搭配 Redis、MySQL 等容器,可加入同一网络实现容器间内网互通,隔离宿主机其他服务,网络架构更整洁。
四、部署前置准备(Windows 环境)
- 本地创建目录结构:
C:/docker/rabbitmq/plugins/
- 在 plugins 文件夹新建
enabled_plugins文件,写入以下内容开启管理面板插件:

bash
[rabbitmq_management].
- 确认本地 Docker Desktop 已正常启动。
五、常用运维操作命令
1. 后台静默启动 RabbitMQ
bash
docker compose -f docker-compose-rabbitmq.yml up -d
2. 实时查看服务运行日志
bash
docker logs -f rabbitmq
3. 停止服务(保留配置与数据)
bash
docker compose -f docker-compose-rabbitmq.yml down
4. 彻底清理容器与镜像
bash
docker compose -f docker-compose-rabbitmq.yml down --rmi all
5. 进入 RabbitMQ 容器执行原生命令
bash
docker exec -it rabbitmq bash
# 示例:查看已启用插件
rabbitmq-plugins list
六、服务访问方式
1. 程序代码连接(AMQP)
连接地址:127.0.0.1:5672 账号:admin,密码:admin 适用于 Java、Python、Go、PHP 等各类业务生产者 / 消费者代码。
2. Web 可视化管理后台
浏览器访问地址:http://localhost:15672 登录账号:admin /admin 后台支持功能:
- 创建 / 删除交换机、队列、绑定关系;
- 查看消息堆积、消费速率、连接通道;
- 消息手动发布、批量删除、死信队列管理;
- 用户、虚拟主机、权限管控。
七、生产环境优化建议
- 修改默认账号密码 :替换
RABBITMQ_DEFAULT_USER、RABBITMQ_DEFAULT_PASS,杜绝弱口令; - 持久化消息数据:新增 volume 挂载数据目录,防止容器删除丢失队列消息;
- 资源限制 :添加
mem_limit、cpus限制容器资源占用,避免抢占宿主机性能; - Linux 服务器适配 :将挂载路径
C:/docker/rabbitmq/替换为 Linux 目录,如/data/rabbitmq/plugins/enabled_plugins; - 网络安全管控:防火墙限制 5672、15672 端口访问,仅内网业务服务器可连接;
- 集群部署:生产环境可基于该模板扩展 RabbitMQ 集群,提升消息可靠性与吞吐量。
八、总结
该 Docker Compose 模板实现 RabbitMQ 开箱即用式部署,无需本地手动安装 Erlang 与 RabbitMQ 依赖,通过挂载文件持久化管理插件,省去重复启用插件操作。配套 Web 可视化面板大幅降低消息队列调试成本,非常适合开发、测试环境快速搭建消息中间件,修改少量配置后也可用于内网测试服务器。

