1、创建一个本地文件夹
在usr/local下,创建rktmq文件夹,当做rocketmq的本地映射目录。(位置或者文件名可自行定义)
2、安装 Namesrv
拉取镜像:
$ docker pull rocketmqinc/rocketmq:4.4.0
启动namesrv:
$ docker run -d -p 9876:9876 -v {RmHome}/data/namesrv/logs:/root/logs -v {RmHome}/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv
{RmHome} 要替换成你的宿主机想保存 MQ 的日志与数据的地方,通过 docker 的 -v 参数使用 volume 功能,把第一步创建的本地目录映射到容器内的目录上。否则所有数据都默认保存在容器运行时的内存中,重启之后就又回到最初的起点。
docker run -d -p 9876:9876 -v /usr/local/rktmq/data/namesrv/logs:/root/logs -v /usr/local/rktmq/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv
3、 安装 broker 服务器
(1) 在 {RmHome}/创建conf 目录,并在conf下创建 broker.conf 文件,里面内容:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 宿主机ip
broker.conf 的文件中的 brokerIP1 是你的 broker 注册到 Namesrv 中的 ip。如果不指定他会默认取容器中的内网 IP, 除非你的应用也同时部署在网络相通的容器中,本地或容器外就无法连接 broker 服务了,进而导致类似 RemotingTooMuchRequestException 等各种异常。
(2)启动broker
$ docker run -d -p 10911:10911 -p 10909:10909 -v {RmHome}/data/broker/logs:/root/logs -v {RmHome}/rocketmq/data/broker/store:/root/store -v {RmHome}/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
同样替换{RmHome}为之前所创建的目录
$ docker run -d -p 10911:10911 -p 10909:10909 -v /usr/local/rktmq/data/broker/logs:/root/logs -v /usr/local/rktmq/rocketmq/data/broker/store:/root/store -v /usr/local/rktmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
此时可以查看下容器的情况,说明namesrv和broker已经启动
4、安装 rocketmq 控制台
录取镜像:
$ docker pull styletang/rocketmq-console-ng
启动:
$ docker run -d --link rmqnamesrv:rmqnamesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8001:8080 -t styletang/rocketmq-console-ng
8001是映射的端口,可自行设置。
启动后可以在浏览器打开:http://mq主机ip:映射端口
到此,rocketmq服务已启动,相应的控制台项目也启动了。
来源:CSDN
作者:YO_RUI
链接:https://blog.csdn.net/qq_34975710/article/details/104755788