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