docker-compose

# 指定 Docker Compose 文件的版本为 3.8,决定了可用的功能与语法
version: '3.8'

# 定义应用所需的服务列表
services:
  # 服务名称:rabbitmq,用于标识和引用该服务
  rabbitmq:
    # 指定使用带有管理插件的 RabbitMQ Alpine 版镜像
    image: rabbitmq:3-management-alpine  
    # 设置容器名称为 rabbitmq,便于在 Docker 中查找
    container_name: rabbitmq  
    # 容器内的主机名,用于网络通信时的主机标识
    hostname: rabbitmq-host
    # 端口映射配置
    ports:
      # 将宿主机 5672 端口映射到容器的 AMQP 默认端口 5672
      - "5672:5672"
      # 将宿主机 15672 端口映射到容器的管理控制台端口 15672
      - "15672:15672"
    # 挂载卷配置
    volumes:
      # 将当前目录下的自定义配置文件挂载到容器内,设置为只读模式
      - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro  
      # 将本地 data 目录挂载为容器的 Mnesia 数据库目录,实现数据持久化
      - ./data:/var/lib/rabbitmq/mnesia  
      # 将本地 logs 目录挂载为容器的日志目录,方便日志查看与收集
      - ./logs:/var/log/rabbitmq  
    # 环境变量配置
    environment:
      # 设置 Erlang cookie,用于 RabbitMQ 集群节点之间的安全通信
      RABBITMQ_ERLANG_COOKIE: "secret_cookie"
    # 容器重启策略
    restart: always
    # 健康检查配置
    healthcheck:
      # 执行 `rabbitmqctl status` 命令检查服务状态
      test: ["CMD", "rabbitmqctl", "status"]
      # 每隔 30 秒执行一次健康检查
      interval: 30s
      # 连续失败 3 次后,判断容器不健康
      retries: 3
      # 容器启动后,等待 30 秒再开始健康检查
      start_period: 30s
      # 每次健康检查的超时时间为 30 秒
      timeout: 30s

# 定义 Docker 卷,用于持久化存储
volumes:
  # 卷名称:rabbitmq-data,使用本地驱动
  rabbitmq-data:
    driver: local
  # 卷名称:rabbitmq-logs,使用本地驱动
  rabbitmq-logs:
    driver: local
  # 卷名称:rabbitmq-etc,使用本地驱动
  rabbitmq-etc:
    driver: local

配置文件

rabbitmq.conf

# RabbitMQ 主配置文件

# 默认用户和密码
default_user = '设置一个用户名'
default_pass = '这里设置你的密码'
default_vhost = /

# 禁用 guest 用户的回环限制
loopback_users.none = true

# 设置 AMQP 默认监听端口
listeners.tcp.default = 5672

# 设置管理插件监听端口
management.listener.port = 15672
management.listener.ssl = false

# 启动时加载定义文件
# management.load_definitions = /etc/rabbitmq/definitions.json

版本区别

镜像标签

基础系统

是否含 Management 插件

大致镜像体积

主要用途

rabbitmq:3

Debian

~150 MB

标准 AMQP 服务镜像

rabbitmq:3-management

Debian

~250 MB

带 Web 管理界面的完整版

rabbitmq:3-alpine

Alpine

~95 MB

轻量级 AMQP 服务镜像

rabbitmq:3-management-alpine

Alpine

~135 MB

轻量级且带 Web 管理界面的镜像