Docker 快速部署
Docker 是部署 RabbitMQ 最快捷的方式,无需手动安装 Erlang,镜像内置匹配的运行环境。
启动基础容器
Bash
docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
rabbitmq:3.13-management
端口说明:
5672:AMQP 协议端口,Java 客户端连接使用15672:管理界面端口,浏览器访问http://localhost:15672
带持久化与自定义密码
Bash
docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=secret123 \
-v rabbitmq_data:/var/lib/rabbitmq \
rabbitmq:3.13-management
环境变量:
| 变量 | 说明 |
|---|---|
| RABBITMQ_DEFAULT_USER | 默认用户名 |
| RABBITMQ_DEFAULT_PASS | 默认密码 |
数据卷:rabbitmq_data 持久化队列与消息数据,容器重启不丢失。
启用插件
默认 management 插件已启用。如需启用其他插件:
Bash
# 进入容器
docker exec -it rabbitmq bash
# 启用 Shovel 插件(消息转发)
rabbitmq-plugins enable rabbitmq_shovel
# 启用 Shovel Management(Web界面管理Shovel)
rabbitmq-plugins enable rabbitmq_shovel_management
# 查看已启用插件
rabbitmq-plugins list
验证部署
方法一:Docker 健康检查
Bash
docker ps | grep rabbitmq
方法二:管理界面
浏览器访问 http://localhost:15672,使用 admin/secret123 登录。
方法三:Java 客户端连接
XML
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.20.0</version>
</dependency>
Java
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class DockerRabbitMQTest {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5672);
factory.setUsername("admin");
factory.setPassword("secret123");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare("docker_test", false, false, false, null);
String message = "Hello from Docker RabbitMQ!";
channel.basicPublish("", "docker_test", null, message.getBytes("UTF-8"));
System.out.println("消息发送成功,Docker 部署验证通过");
}
}
}
docker-compose 部署
YAML
version: '3.8'
services:
rabbitmq:
image: rabbitmq:3.13-management
container_name: rabbitmq
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: secret123
volumes:
- rabbitmq_data:/var/lib/rabbitmq
restart: unless-stopped
volumes:
rabbitmq_data:
启动命令:
Bash
docker-compose up -d
注意事项
rabbitmq:3.13是纯服务器镜像,无管理界面;rabbitmq:3.13-management包含管理界面。
默认用户名和密码为
guest/guest,但仅限 localhost 连接。远程连接需创建新用户。
数据卷持久化仅保存队列和消息定义,不保存未确认消息,重启后未消费消息需重新发送。
要点总结
- Docker 部署免去 Erlang 版本兼容问题,镜像内置匹配环境
- 端口 5672 用于 AMQP 连接,15672 用于管理界面
- 通过环境变量
RABBITMQ_DEFAULT_USER/PASS设置自定义密码 - 数据卷持久化保证容器重启后配置与消息不丢失
- Java 客户端连接时需使用自定义用户名密码(guest 仅限 localhost)
📝 发现内容有误?点击此处直接编辑