使用 Docker Compose 部署 RabbitMQ
前言
本地或测试环境需要消息队列时,用容器部署 RabbitMQ 可以避免在本机安装 Erlang 与复杂依赖。
Docker Compose 能把镜像、端口、账号和持久化卷写进一个文件,便于团队复现同一套环境。
下文以官方带管理插件的镜像为例,版本号请按仓库说明与你方安全策略自行调整。
本文不覆盖集群与高可用生产拓扑,仅面向单机开发与联调。
实现
准备目录
在任意目录新建 docker-compose.yml,与同目录下执行后续命令即可。
若工程里已有 Compose 文件,也可把下面 rabbitmq 服务合并进现有文件并避免服务名、端口冲突。
编写 Compose
下面是单节点 RabbitMQ 的示例:对外映射 5672(AMQP)与 15672(管理界面),并用命名卷持久化数据目录。
1 | mkdir -p /data/tools/docker-compose-root/compose-mq |
docker-compose.yml
1 | services: |
请将默认用户名、密码改为强口令,切勿在仓库中提交真实生产凭证。
镜像标签 3-management 会随上游更新 minor 版本,若需锁版本可改为具体 digest 或带 patch 的标签。
启动与停止
在 docker-compose.yml 所在目录执行以下命令以启动服务。
1 | docker compose up -d |
查看容器状态与日志可确认是否就绪。
1 | docker compose ps |
停止并删除容器(默认保留卷中的数据)可使用下面命令。
1 | docker compose down |
若希望连数据卷一并清理,需谨慎使用 docker compose down -v,会删除持久化数据。
管理界面与默认账号
浏览器访问 http://localhost:15672,使用 Compose 中配置的 RABBITMQ_DEFAULT_USER 与 RABBITMQ_DEFAULT_PASS 登录。
若未设置环境变量而使用镜像默认的 guest 用户,按 RabbitMQ 默认策略通常只能从容器所在网络内连接,跨主机连接时请改用自定义用户。
验证
应用侧连接串一般为 amqp://用户名:密码@主机:5672/。
同一台机器上从宿主机连容器映射的端口时,主机可写 localhost 或 127.0.0.1。
进入容器执行内置命令可查看节点状态(示例中服务名为 rabbitmq)。
1 | docker compose exec rabbitmq rabbitmq-diagnostics ping |
若能返回 Ping succeeded,说明节点进程正常。