Skip to main content

Docker 构建 RabbitMQ

Docker 构建 RabbitMQ(docker-compose 部署版本)​

RabbitMQ 是开源的消息中间件。本文按 docker-compose 方式部署 RabbitMQ(带 management 插件的镜像,无需手动启用 rabbitmq_management),镜像、端口、账号、目录、容器名等全部集中在 .env 中管理。

1. 宿主目录​

宿主目录用途容器内用户
/data/runtime/docker/rabbitmq/data消息数据uid 999
/data/runtime/docker/rabbitmq/conf配置目录uid 999
/data/runtime/docker/rabbitmq/log运行日志uid 999

若将 .env 中 RABBITMQ_DATA_DIR / RABBITMQ_CONF_DIR / RABBITMQ_LOG_DIR 留空,则回退使用 Docker 命名卷,无需创建宿主目录。

2. 创建宿主目录并设置权限​

bind mount 首次使用需先建目录并授权(容器内 rabbitmq 用户 uid 999):

mkdir -p /data/runtime/docker/rabbitmq/{data,conf,log}
chown -R 999:999 /data/runtime/docker/rabbitmq

3. 编制 .env​

在本目录创建 .env 文件(内容如下,按需修改):

# ---------- RabbitMQ 环境变量(集中管理) ----------
RABBITMQ_IMAGE=rabbitmq:3.13-management
RABBITMQ_CONTAINER_NAME=rabbitmq
# RabbitMQ 按节点名(hostname)存储数据,勿随意更改
RABBITMQ_HOSTNAME=rabbitmq
RABBITMQ_DEFAULT_VHOST=/
RABBITMQ_DEFAULT_USER=admin
RABBITMQ_DEFAULT_PASS=admin123456
RABBITMQ_AMQP_PORT=5672
RABBITMQ_MGMT_PORT=15672
# 宿主机数据目录(统一约定 /data/runtime/docker/<服务>);留空则回退到命名卷
RABBITMQ_DATA_DIR=/data/runtime/docker/rabbitmq/data
RABBITMQ_CONF_DIR=/data/runtime/docker/rabbitmq/conf
RABBITMQ_LOG_DIR=/data/runtime/docker/rabbitmq/log
TZ=Asia/Shanghai

4. .env 变量说明​

变量说明示例
RABBITMQ_IMAGE镜像版本(management 版)rabbitmq:3.13-management
RABBITMQ_CONTAINER_NAME容器名rabbitmq
RABBITMQ_HOSTNAME节点名(RabbitMQ 按节点名存储数据,勿随意改)rabbitmq
RABBITMQ_AMQP_PORT应用访问端口5672
RABBITMQ_MGMT_PORT控制台 Web 端口15672
RABBITMQ_DEFAULT_VHOST / _USER / _PASS默认虚拟机 / 账号 / 密码/ / admin / admin123456
RABBITMQ_DATA_DIR / _CONF_DIR / _LOG_DIR数据 / 配置 / 日志目录,留空回退命名卷/data/runtime/docker/rabbitmq/...
TZ时区Asia/Shanghai

5. docker-compose.yml​

在本目录创建 docker-compose.yml:

services:
rabbitmq:
image: ${RABBITMQ_IMAGE}
container_name: ${RABBITMQ_CONTAINER_NAME}
restart: unless-stopped
hostname: ${RABBITMQ_HOSTNAME}
environment:
RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_DEFAULT_VHOST}
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS}
TZ: ${TZ}
ports:
- "${RABBITMQ_AMQP_PORT}:5672" # 应用访问端口
- "${RABBITMQ_MGMT_PORT}:15672" # 控制台 Web 端口
volumes:
- ${RABBITMQ_DATA_DIR:-rabbitmq-data}:/var/lib/rabbitmq
- ${RABBITMQ_CONF_DIR:-rabbitmq-conf}:/etc/rabbitmq
- ${RABBITMQ_LOG_DIR:-rabbitmq-log}:/var/log/rabbitmq
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
interval: 10s
timeout: 5s
retries: 10

volumes:
rabbitmq-data:
rabbitmq-conf:
rabbitmq-log:

6. 启动​

cd Docker构建RabbitMQ
docker compose up -d
docker compose ps
docker compose logs -f rabbitmq
docker compose down # 停止并移除容器(命名卷数据保留)
docker compose down -v # 连数据卷一起清空

7. 验证​

浏览器请求 http://localhost:15672,输入 .env 中的账号密码(默认 admin/admin123456)。

rabbitmq控制台