【保姆级教程】Docker部署RabbitMQ,带管理界面+数据持久化
大家好,我是Goya!
今天是Docker部署系列的第六篇文章:用Docker部署RabbitMQ。
RabbitMQ是消息队列(Message Queue)中最受欢迎的一员,它负责在微服务之间传递消息,实现系统的异步通信和解耦。很多分布式系统、秒杀系统都离不开它。
本篇要点:
✅ 一分钟启动RabbitMQ容器
✅ 开启管理插件,自带Web后台
✅ 设置用户名密码和数据持久化
✅ 使用docker-compose一键部署
✅ 支持远程客户端连接
✅ Python代码测试发送/接收消息
✅ 常见报错及解决方案
一、RabbitMQ是什么?
RabbitMQ是一个开源的消息代理和队列服务器,用Erlang语言编写。它的核心作用是接收、存储和转发消息。
举个生活例子:
外卖小哥(生产者)把餐送到中转站(RabbitMQ),你(消费者)有空时去取。这样外卖小哥不用等你开门,你也不用一直等着外卖,大家各干各的,这就是解耦。
应用场景:
- 订单系统:下单后发消息,库存、积分、短信等系统异步处理
- 秒杀系统:削峰填谷,防止瞬间高流量压垮数据库
- 日志处理:集中收集各服务的日志
二、创建项目目录
我们先创建好项目目录,后面会用到:
# 创建项目目录
mkdir -p ~/docker/rabbitmq-project
cd ~/docker/rabbitmq-project
# 创建数据目录(用于持久化)
mkdir -p data
# 创建配置文件目录(可选,存放自定义配置)
mkdir -p config
目录结构说明:
~/docker/rabbitmq-project/
├── docker-compose.yml # 核心配置文件
├── data/ # 消息数据持久化
└── config/ # 自定义配置(rabbitmq.conf等)
三、编写docker-compose.yml
这是本文的核心!用docker-compose可以一键启动,方便管理。
vim docker-compose.yml
粘贴以下内容:
version: '3.8'
services:
rabbitmq:
image: rabbitmq:3.12-management
container_name: rabbitmq
restart: always
ports:
# 5672: 程序连接端口(Java/Python/Go等)
- "5672:5672"
# 15672: 管理后台端口(浏览器访问)
- "15672:15672"
environment:
# 默认管理员账号密码
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: 123456
# 时区设置(可选)
TZ: Asia/Shanghai
volumes:
# 数据持久化:将容器内的数据目录挂载到宿主机
- ./data:/var/lib/rabbitmq
# 配置文件挂载(如果需要自定义配置)
# - ./config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
# 健康检查(可选,确保服务真正可用)
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "ping"]
interval: 30s
timeout: 10s
retries: 5
# 日志配置(限制日志大小)
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
配置详解:
以下是整理后的表格形式:
| 参数 | 说明 |
|---|---|
image: rabbitmq:3.12-management | 使用带管理界面的镜像 |
ports: - "5672:5672" | 消息通信端口,程序连接用 |
ports: - "15672:15672" | 管理后台端口,浏览器访问用 |
RABBITMQ_DEFAULT_USER | 设置管理员用户名 |
RABBITMQ_DEFAULT_PASS | 设置管理员密码 |
./data:/var/lib/rabbitmq | 数据持久化,重启容器消息不丢 |
healthcheck | 健康检查,确保服务真正就绪 |
四、启动RabbitMQ
4.1 一键启动
cd ~/docker/rabbitmq-project
docker-compose up -d
看到类似输出就成功:
Creating rabbitmq ... done
4.2 查看运行状态
docker-compose ps
应该显示 rabbitmq 状态为 Up。
4.3 查看启动日志
docker-compose logs -f
看到 Server startup complete 说明启动完成。按 Ctrl+C 退出日志查看。
五、验证RabbitMQ
5.1 访问管理后台
打开浏览器,访问:
http://你的服务器IP:15672

登录信息:
-
用户名:admin
-
密码:123456
成功登录后,你会看到RabbitMQ的管理界面,可以查看:
-
Overview:概览信息(连接数、队列数、消息速率)
-
Connections:当前客户端连接
-
Channels:通道
-
Exchanges:交换机
-
Queues:队列(核心!)
-
Admin:用户管理
5.2 测试消息收发(命令行)
通过管理后台创建队列和发送消息:
1.点击 Queues → Add a new queue
-
Type:Classic
-
Name:test_queue
-
点击 Add queue
2.点击刚创建的队列 test_queue
3.在 Publish message 区域:
-
Payload:Hello RabbitMQ!
-
点击 Publish message
4.在 Get messages 区域:
- 点击 Get Message(s),就能看到刚才发送的消息


六、数据持久化验证
测试一下重启容器后数据是否还在:
# 重启容器
docker-compose restart
# 再次访问管理后台 http://IP:15672
# 检查之前创建的 test_queue 是否还在
如果队列还在,说明数据持久化生效!
七、配置防火墙/安全组
Ubuntu系统(UFW):
# 开放5672和15672端口
sudo ufw allow 5672/tcp
sudo ufw allow 15672/tcp
sudo ufw status
云服务器:
在阿里云/腾讯云/华为云的控制台,找到「安全组」,添加入方向规则:
-
端口:5672, 15672
-
授权对象:0.0.0.0/0(允许所有IP,或指定你的IP)
八、docker-compose常用命令
# 启动所有服务
docker-compose up -d
# 停止所有服务
docker-compose down
# 重启所有服务
docker-compose restart
# 查看实时日志
docker-compose logs -f
# 查看某个服务的日志
docker-compose logs rabbitmq
# 进入容器
docker-compose exec rabbitmq bash
# 执行rabbitmqctl命令(管理)
docker-compose exec rabbitmq rabbitmqctl list_queues
# 查看容器状态
docker-compose ps
# 停止并删除容器(数据还在,因为挂载了本地)
docker-compose down
# 停止并删除容器+删除数据卷(谨慎!数据会丢)
docker-compose down -v
九、常见问题排查
Q1:容器启动失败
# 查看错误日志
docker-compose logs rabbitmq
常见错误:
-
端口被占用:修改docker-compose.yml中的端口映射
-
权限不足:chmod -R 777 ./data
Q2:管理后台无法访问(15672)
# 检查端口监听
netstat -tlnp | grep 15672
# 检查防火墙
ufw status
# 云服务器:检查安全组是否开放15672
Q3:Python代码连接不上
# 测试网络连通性
telnet 你的服务器IP 5672
# 检查Python代码中的IP、用户名、密码是否正确
# 确认安全组/防火墙开放了5672端口
Q4:容器名冲突
# 查看冲突的容器
docker ps -a | grep rabbitmq
# 删除旧容器
docker rm -f rabbitmq
# 重新启动
docker-compose up -d
Q5:数据持久化不生效
检查docker-compose.yml中的volumes配置:
volumes:
- ./data:/var/lib/rabbitmq # 确保路径正确
然后重启:
docker-compose down
docker-compose up -d
Q6:忘记密码怎么办?
# 进入容器
docker-compose exec rabbitmq bash
# 重置密码(例如重置admin密码)
rabbitmqctl change_password admin 新密码
# 或者创建新管理员
rabbitmqctl add_user 新用户 新密码
rabbitmqctl set_user_tags 新用户 administrator
十三、总结
通过本文,我们成功实现了:
实现功能与验证方法
| 功能 | 实现方式 | 验证方法 |
|---|---|---|
| Docker部署RabbitMQ | docker-compose | docker-compose ps |
| 开启管理插件 | 使用management镜像 | 浏览器访问15672 |
| 设置用户名密码 | 环境变量 | 登录管理后台 |
| 数据持久化 | 数据卷挂载 | 重启容器后数据还在 |
现在你的服务器上已经有了RabbitMQ消息队列,可以用于微服务通信、异步任务处理等场景。
搞定! 🎯 你的Docker全家桶又添一员大将!
如果本文对你有帮助,欢迎点赞、收藏、评论!
更多推荐
所有评论(0)