安装 rocketmq
拉取 rocketmq 镜像
docker pull apache/rocketmq
运行 namesrv
docker run -d \
--name rmqnamesrv \
--privileged=true \
-p 9876:9876 \
-v /tool/rocketmq/logs:/home/rocketmq/logs \
-v /tool/rocketmq/store:/home/rocketmq/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq:latest \
# 应该是硬性规定namesrv的服务名为mqnamesrv
sh mqnamesrv
--name:容器名
--privileged 提供root权限
-p 映射端口 宿主机端口:容器端口
-v 文件/目录挂载 宿主机目录:容器内部目录
-e 启动配置
启动 broker,需要指定 namesrv 的地址,broker 默认监听的端口是10909,10911,10912
docker run -d \
--name rmqbroker \
--link rmqnamesrv:namesrv \
--privileged=true \
-p 10909:10909 \
-p 10911:10911 \
-p 10912:10912 \
-v /tool/rocketmq/broker/logs:/home/rocketmq/logs \
-v /tool/rocketmq/broker/store:/home/rocketmq/store \
-v /tool/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
# 可以通过 BROKER_PORT=XXXX 指定当前broker使用端口
apache/rocketmq:latest \
sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
可以使用默认的配置文件,也可以自定义配置,配置文件示例:
terName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# namesrv 主机地址
namesrvAddr=服务器ip:9876
# 当前 broker 主机地址
brokerIP1=服务器ip
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911iskMaxUsedSpaceRatio=95
sh -c 指定配置文件启动容器
启动控制台
拉取控制台镜像
docker pull pangliang/rocketmq-console-ng
启动控制台容器,一定要先启动 namesrv
docker run -d \
--restart=always \
--name rmq-admin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=服务器ip:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
pangliang/rocketmq-console-ng \
sh rmq-admin
--restart 一直自动重启
注意:如果要进行挂载,要确保你的宿主机中挂载的文件目录都要有足够的权限。自己玩的话直接给最大权限就行或者在docker 创建容器时指定--privileged=true
给当前容器指定宿主机的root
权限
# 目录最大权限777,文件最大666
chmod 777 -R 挂载文件