以下是在Docker中安装RabbitMQ并实现配置、数据、日志文件映射的完整步骤。
步骤 1:创建本地目录结构
# 创建配置、数据、日志目录
mkdir -p /root/docker/rabbitmq/{conf,data,logs}# 目录结构说明:
# - conf: 存放自定义配置文件
# - data: 持久化存储队列和消息
# - logs: 存储容器日志
步骤 2:拉取镜像
docker pull rabbitmq:4.0-management
步骤 3:创建配置文件
创建 /root/docker/rabbitmq/conf/rabbitmq.conf
(基础配置示例):
# 允许guest用户远程访问(生产环境慎用)
loopback_users.guest = false# 监听端口配置
listeners.tcp.default = 5672
management.tcp.port = 15672# 日志配置(路径需与映射目录一致)
log.dir = /var/log/rabbitmq
log.file = rabbitmq.log
log.file.rotation.count = 5
log.file.rotation.size = 10485760 # 10MB
步骤 4:运行Docker容器
docker run -d \--name rabbitmq \-p 5672:5672 \-p 15672:15672 \-v /root/docker/rabbitmq/conf:/etc/rabbitmq \-v /root/docker/rabbitmq/data:/var/lib/rabbitmq \-v /root/docker/rabbitmq/logs:/var/log/rabbitmq \-e RABBITMQ_DEFAULT_USER=admin \-e RABBITMQ_DEFAULT_PASS=123456 \--restart=unless-stopped \rabbitmq:4.0-management
步骤 5:验证与使用
-
检查容器状态:
docker ps | grep rabbitmq
-
访问管理界面:
- 浏览器打开
http://localhost:15672
- 使用账号
admin
和密码password
登录
- 浏览器打开
-
查看持久化文件:
# 检查数据文件 ls /root/docker/rabbitmq/data# 查看日志文件 ls /root/docker/rabbitmq/logs tail -f /root/docker/rabbitmq/logs/rabbitmq.log
关键配置说明
配置项 | 作用 | 必要性 |
---|---|---|
-p 5672:5672 | AMQP协议端口 | 必选 |
-p 15672:15672 | 管理界面端口 | 必选 |
-v /root/docker/rabbitmq/conf:/etc/rabbitmq | 映射自定义配置文件(如 rabbitmq.conf ) | 可选 |
-v /root/docker/rabbitmq/data:/var/lib/rabbitmq | 持久化消息队列数据 | 必选 |
-v/root/docker/rabbitmq/logs:/var/log/rabbitmq | 持久化日志文件 | 可选 |
-e RABBITMQ_DEFAULT_USER=admin | 设置管理员用户名 | 按需 |
-e RABBITMQ_DEFAULT_PASS=123456 | 设置管理员密码 | 按需 |
loopback_users.guest = false | 允许guest用户远程访问 | 按需 |
权限问题修复(重要!)
RabbitMQ容器默认以用户 rabbitmq
(UID 100)运行,需确保宿主机目录可写:
# 一键修复权限(开发环境适用)
sudo chown -R 100:101 /root/docker/rabbitmq/data /root/docker/rabbitmq/logs# 或更安全的精细化控制:
sudo chmod -R 777 /root/docker/rabbitmq/{data,logs,conf}
安装延迟队列插件
## 下载插件
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v4.0.7/rabbitmq_delayed_message_exchange-v4.0.7.ez
# 如果提示 SSL 验证问题,可跳过验证
wget --no-check-certificate https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v4.0.7/rabbitmq_delayed_message_exchange-v4.0.7.ez
## 将插件复制到rabbitmq容器中(容器正常运行中)
docker cp rabbitmq_delayed_message_exchange-v4.0.7.ez rabbitmq:/opt/rabbitmq/plugins/
## 进入容器启动插件
# 进入容器
docker exec -it rabbitmq /bin/bash# 在容器内执行
rabbitmq-plugins enable rabbitmq_delayed_message_exchange# 退出并重启容器
exit
docker restart rabbitmq
## 验证插件是否已启动
docker exec rabbitmq rabbitmq-plugins list
完整目录结构示例
rabbitmq/
├── conf/
│ └── rabbitmq.conf # 自定义配置文件
├── data/ # 持久化数据(队列、消息)
└── logs/ # 日志文件(rabbitmq.log)