Docker Compose 一键部署 RabbitMQ 消息队列服务

一、方案概述

本文提供完整 docker-compose-rabbitmq.yml 编排脚本,基于 RabbitMQ 3.12.9 官方镜像快速搭建消息中间件,内置管理插件持久化配置、自定义登录账号、端口映射、自动重启与专属网桥网络,适配 Windows Docker Desktop 开发环境,一条命令即可完成服务部署,自带 Web 可视化管理后台,方便开发调试消息队列。

核心能力:

  1. AMQP 通信端口 5672 供业务程序收发消息;
  2. 15672 端口提供 Web 管理面板,可视化管理交换机、队列、绑定关系;
  3. 持久化插件配置,容器重启后管理插件自动启用;
  4. 自定义管理员账号密码,容器异常自动重启保障服务稳定。

二、完整 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 execdocker 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 环境)

  1. 本地创建目录结构:C:/docker/rabbitmq/plugins/
  2. 在 plugins 文件夹新建 enabled_plugins 文件,写入以下内容开启管理面板插件:
bash 复制代码
[rabbitmq_management].
  1. 确认本地 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 后台支持功能:

  • 创建 / 删除交换机、队列、绑定关系;
  • 查看消息堆积、消费速率、连接通道;
  • 消息手动发布、批量删除、死信队列管理;
  • 用户、虚拟主机、权限管控。

七、生产环境优化建议

  1. 修改默认账号密码 :替换 RABBITMQ_DEFAULT_USERRABBITMQ_DEFAULT_PASS,杜绝弱口令;
  2. 持久化消息数据:新增 volume 挂载数据目录,防止容器删除丢失队列消息;
  3. 资源限制 :添加 mem_limitcpus 限制容器资源占用,避免抢占宿主机性能;
  4. Linux 服务器适配 :将挂载路径 C:/docker/rabbitmq/ 替换为 Linux 目录,如 /data/rabbitmq/plugins/enabled_plugins
  5. 网络安全管控:防火墙限制 5672、15672 端口访问,仅内网业务服务器可连接;
  6. 集群部署:生产环境可基于该模板扩展 RabbitMQ 集群,提升消息可靠性与吞吐量。

八、总结

该 Docker Compose 模板实现 RabbitMQ 开箱即用式部署,无需本地手动安装 Erlang 与 RabbitMQ 依赖,通过挂载文件持久化管理插件,省去重复启用插件操作。配套 Web 可视化面板大幅降低消息队列调试成本,非常适合开发、测试环境快速搭建消息中间件,修改少量配置后也可用于内网测试服务器。