1. 快速安装RocketMQ 5.x
方法一:使用官方镜像(推荐)
# 创建网络(如果还没创建)
docker network create rocketmq-network
# 启动NameServer
docker run -d \
--name rmqnamesrv \
--net rocketmq-network \
-p 9876:9876 \
-v /data/rocketmq/namesrv/logs:/root/logs \
-v /data/rocketmq/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=256m" \
apacherocketmq/rocketmq:5.1.4 \
sh mqnamesrv
# 启动Broker
docker run -d \
--name rmqbroker \
--net rocketmq-network \
-p 10911:10911 \
-p 10909:10909 \
-v /data/rocketmq/broker/logs:/root/logs \
-v /data/rocketmq/broker/store:/root/store \
-v /data/rocketmq/broker/conf:/home/rocketmq/rocketmq-5.1.4/conf \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-e "MAX_POSSIBLE_HEAP=512m" \
-e "JAVA_OPTS=-Duser.home=/home/rocketmq" \
apacherocketmq/rocketmq:5.1.4 \
sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf
方法二:使用Docker Compose(更简洁)
创建 docker-compose.yml 文件:
version: '3.8'
services:
namesrv:
image: apacherocketmq/rocketmq:5.1.4
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/namesrv/logs:/root/logs
- ./data/namesrv/store:/root/store
environment:
- MAX_POSSIBLE_HEAP=256m
command: sh mqnamesrv
networks:
- rocketmq-net
broker:
image: apacherocketmq/rocketmq:5.1.4
container_name: rmqbroker
ports:
- 10911:10911
- 10909:10909
volumes:
- ./data/broker/logs:/root/logs
- ./data/broker/store:/root/store
- ./broker.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf
environment:
- NAMESRV_ADDR=namesrv:9876
- MAX_POSSIBLE_HEAP=512m
- JAVA_OPTS=-Duser.home=/home/rocketmq
command: sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf
depends_on:
- namesrv
networks:
- rocketmq-net
proxy:
image: apacherocketmq/rocketmq:5.1.4
container_name: rmqproxy
ports:
- 8081:8081
environment:
- NAMESRV_ADDR=namesrv:9876
depends_on:
- namesrv
- broker
command: sh mqproxy
networks:
- rocketmq-net
networks:
rocketmq-net:
driver: bridge
创建Broker配置文件 broker.conf:
# Broker配置
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# Broker监听地址(重要:需要配置为容器对外IP或0.0.0.0)
listenPort=10911
brokerIP1=你的宿主机IP # 或者 0.0.0.0
brokerIP2=你的宿主机IP # 或者 0.0.0.0
# 存储路径
storePathRootDir=/home/rocketmq/store
storePathCommitLog=/home/rocketmq/store/commitlog
storePathConsumeQueue=/home/rocketmq/store/consumequeue
storePathIndex=/home/rocketmq/store/index
storeCheckpoint=/home/rocketmq/store/checkpoint
abortFile=/home/rocketmq/store/abort
运行:
# 启动所有服务
docker-compose up -d
# 查看状态
docker-compose ps
2. 安装Dashboard(管理控制台)
# 下载最新版Dashboard
docker pull apacherocketmq/rocketmq-dashboard:latest
# 运行Dashboard
docker run -d \
--name rocketmq-dashboard \
--net rocketmq-network \
-p 8080:8080 \
-e "JAVA_OPTS=-Xmx256m -Xms256m" \
-e "ROCKETMQ_CONFIG_NAMESRVADDR=rmqnamesrv:9876" \
apacherocketmq/rocketmq-dashboard:latest
3. 完整集群部署(1主2从)
创建 docker-compose-cluster.yml:
version: '3.8'
services:
namesrv1:
image: apacherocketmq/rocketmq:5.1.4
container_name: rmqnamesrv1
ports:
- 9876:9876
command: sh mqnamesrv
networks:
- rmq-cluster
broker-master:
image: apacherocketmq/rocketmq:5.1.4
container_name: rmqbroker-master
ports:
- 10911:10911
volumes:
- ./conf/broker-master.conf:/opt/rocketmq/conf/broker.conf
environment:
- NAMESRV_ADDR=namesrv1:9876
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- namesrv1
networks:
- rmq-cluster
broker-slave1:
image: apacherocketmq/rocketmq:5.1.4
container_name: rmqbroker-slave1
ports:
- 10912:10911
volumes:
- ./conf/broker-slave1.conf:/opt/rocketmq/conf/broker.conf
environment:
- NAMESRV_ADDR=namesrv1:9876
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- namesrv1
networks:
- rmq-cluster
proxy:
image: apacherocketmq/rocketmq:5.1.4
container_name: rmqproxy
ports:
- 8081:8081
environment:
- NAMESRV_ADDR=namesrv1:9876
command: sh mqproxy
depends_on:
- broker-master
- broker-slave1
networks:
- rmq-cluster
networks:
rmq-cluster:
driver: bridge
4. 验证安装
# 检查容器运行状态
docker ps
# 查看NameServer日志
docker logs rmqnamesrv
# 查看Broker日志
docker logs rmqbroker
# 进入容器测试
docker exec -it rmqbroker bash
# 在容器内创建Topic
sh mqadmin updateTopic -n namesrv:9876 -t TestTopic -c DefaultCluster
5. 常用命令
# 停止服务
docker stop rmqbroker rmqnamesrv
# 删除容器
docker rm rmqbroker rmqnamesrv
# 查看磁盘使用情况
docker exec rmqbroker sh mqadmin statsAll -n namesrv:9876
# 检查集群状态
docker exec rmqbroker sh mqadmin clusterList -n namesrv:9876
注意事项
版本选择:建议使用最新稳定版,如 5.1.4
网络配置:确保容器间网络互通
存储持久化:重要数据要挂载宿主机目录
内存配置:根据实际需求调整JVM内存参数
生产环境:建议使用完整的集群部署方案
这样你就可以在Docker中成功运行RocketMQ 5.x了。Proxy模式是5.x的新特性,提供了更灵活的消息路由能力。