安装Name Server

创建NameServer映射路径

mkdir /usr/local/rocketmq/namesvr/{logs,data} -p

# 设置权限
chmod 777 -R /usr/local/rocketmq/nameserver/*

创建NameServer容器

docker run -d \
--privileged=true \
--name rmqnamesrv \
apache/rocketmq:5.1.0 sh mqnamesrv

将容器中的启动脚本拷贝到宿主机中

docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /usr/local/rocketmq/nameserver/bin/runserver.sh

编辑启动脚本

vim /usr/local/rocketmq/namesrv/bin/runserver.sh

calculate_heap_sizes 函数的位置注释并保存(在文件的末尾)

RocketMQ  Docker安装_rocketmq

关闭容器

docker rm -f rmqnamesrv

创建容器

 docker run -d \
--privileged=true \
--restart=always \
--name rmqnamesrv \
-p 9876:9876  \
-v /usr/local/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /usr/local/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
apache/rocketmq:5.1.0 sh mqnamesrv

部署Broker

创建映射目录

# 创建需要的挂载目录
mkdir /usr/local/rocketmq/broker/{logs,data,conf,bin} -p 

chmod 777 -R /usr/local/rocketmq/broker/*

创建broker.conf文件

vim /usr/local/rocketmq/broker/conf/broker.conf

broker.conf

# nameServer 地址多个用;隔开 默认值null
# 例:127.0.0.1:6666;127.0.0.1:8888 
namesrvAddr = ip:port
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# Broker服务地址	String	内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = ip
# Broker角色 ASYNC_MASTER  SYNC_MASTER
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 72
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

创建容器

docker run -d \
--name rmqbroker \
--privileged=true \
apache/rocketmq:5.1.0 \
sh mqbroker

将容器中的启动脚本拷贝到宿主机中

docker cp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /usr/local/rocketmq/broker/bin/runbroker.sh

修改runbroker.sh

# 打开脚本文件
vi /usr/local/rocketmq/broker/bin/runbroker.sh 

calculate_heap_sizes 函数的位置注释并保存(在文件的末尾)

RocketMQ  Docker安装_rocketmq_02

关闭容器

docker rm -f rmqnamesrv

创建broker

docker run -d \
--restart=always \
--name rmqbroker \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /usr/local/rocketmq/broker/logs:/root/logs \
-v /usr/local/rocketmq/broker/store:/root/store \
-v /usr/local/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /usr/local/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
apache/rocketmq:5.1.0 \
sh mqbroker -c /home/rocketmq/broker.conf

部署RocketMQ图形化界面

docker run -d \
--restart=always \
--name rmqdashboard \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=ip:port -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8080:8080 \
apacherocketmq/rocketmq-dashboard

访问RocketMQ图形界面

http://ip:8080

RocketMQ  Docker安装_docker_03