Docker 安装 RabbitMQ

以下是在Docker中安装RabbitMQ并实现配置、数据、日志文件映射的完整步骤。


步骤 1:创建本地目录结构

bash 复制代码
# 创建配置、数据、日志目录
mkdir -p /root/docker/rabbitmq/{conf,data,logs}

# 目录结构说明:
# - conf: 存放自定义配置文件
# - data: 持久化存储队列和消息
# - logs: 存储容器日志

步骤 2:拉取镜像

bash 复制代码
docker pull rabbitmq:4.0-management

步骤 3:创建配置文件

创建 /root/docker/rabbitmq/conf/rabbitmq.conf(基础配置示例):

ini 复制代码
# 允许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容器

bash 复制代码
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:验证与使用

  1. 检查容器状态

    bash 复制代码
    docker ps | grep rabbitmq
  2. 访问管理界面

    • 浏览器打开 http://localhost:15672
    • 使用账号 admin 和密码 password 登录
  3. 查看持久化文件

    bash 复制代码
    # 检查数据文件
    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)运行,需确保宿主机目录可写:

bash 复制代码
# 一键修复权限(开发环境适用)
sudo chown -R 100:101 /root/docker/rabbitmq/data /root/docker/rabbitmq/logs

# 或更安全的精细化控制:
sudo chmod -R 777 /root/docker/rabbitmq/{data,logs,conf}

安装延迟队列插件

bash 复制代码
## 下载插件
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)
相关推荐
慕木兮人可5 小时前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器
qq_529835355 小时前
RabbitMQ的消息可靠传输
分布式·rabbitmq
armcsdn8 小时前
基于Docker Compose部署Traccar容器与主机MySQL的完整指南
mysql·docker·容器
凌晨两点的菜鸡9 小时前
前端部署-docker
前端·docker
LuckyLay9 小时前
使用 Docker 搭建 Go Web 应用开发环境——AI教你学Docker
前端·docker·golang
杨浦老苏10 小时前
IntelliSSH:AI驱动的远程服务器管理软件
人工智能·docker·ai·ssh·群晖
铅笔侠_小龙虾10 小时前
Docker 实战 -- Mysql
mysql·docker·容器
IvanCodes11 小时前
三、Docker常用命令
docker·容器
gtestcandle12 小时前
rabbitmq 的多用户、多vhost使用
分布式·rabbitmq
Du_XiaoNan12 小时前
RabbitMQ第一章(MQ基础与RocketMQ使用手册)
rabbitmq·java-rocketmq·java-rabbitmq