网上的不太全,我做了一些补充,参考:
首先,准备一个你要临时放置脚本的目录(文件夹),该目录和docker镜像没啥关系,位置不影响你后续使用
第一步:下载脚本
git clone https://github.com/apache/rocketmq-docker.git
第二步:
进入到image-build目录下,执行sh命令
cd image-build
sh build-image.sh 4.9.2 centos
sh build-image.sh(命令脚本名字) 4.9.2(rocketmq版本号,可以替换成其他你需要的版本号) centos(docker镜像的基础,默认是ubantu)
第三步:直接等脚本执行完就行了,他会下载若干依赖,并执行安装和镜像打包,安装完成后,就可以看到镜像已经pull下来了
第四步,启动容器
docker run -d --restart=always --name mq-namesrv -p 9876:9876 -v C:/work/rocket_mq_data/data/namesrv/logs:/home/rocketmq/logs apacherocketmq/rocketmq:4.9.2 sh mqnamesrv
第五步,启动broker
注意!以下命令里面的数据卷,在win10上面可能需要填写绝对路径,比如D:/work_space/mq 这样的绝对路径,不然docker找不到,会报错
还有一个问题,有的教程说要使用 --network=host,让所有的容器处在一个网络里,但是这个参数在win10不生效,因此都以暴露端口的形式运行
1.conf准备,在你要挂在的数据卷里面创建一个conf文件,${PATH}/data/broker/conf/broker.conf
可以参考
# mq集群名称
brokerClusterName = YYDSCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-master
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 00
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 72
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
#设置broker节点所在服务器的ip地址(公网IP),win系统下,用ipconfig查一下你的主机ip
brokerIP1 = 172.28.48.1
命令中的 NAMESRV_ADDR 要填写你刚才安装的mq的ip地址,直接使用 --link监听容器就行
docker run -d --restart=always --name mq-broker --link mq-namesrv:namesrv -p 10911:10911 -p 10909:10909 -v C:/work/rocket_mq_data/data/broker/logs:/home/rocketmq/logs -v C:/work/rocket_mq_data/data/broker/store:/home/rocketmq/store -v C:/work/rocket_mq_data/data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.2/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" apacherocketmq/rocketmq:4.9.2 sh mqbroker -c ../conf/broker.conf
2.执行命令,得到一个人broker的容器
第六步:装一个可视化管理,RocketMQ Dashboard
还是image-build目录下,执行build-image-dashboard.sh脚本
我看其他 教程说可能需要改pom文件,但是我压根没找到pom文件在哪,安装也是成功的
sh build-image-dashboard.sh 1.0.0 centos
执行命令 得到镜像
启动镜像的容器
docker run -d --name mq-console --link mq-namesrv:namesrv -p 8080:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876" -t apache/rocketmq-dashboard:1.0.0-centos
访问 http://localhost:8080/#/ 进入到可视化面板界面,觉得英文不舒服的可以右上角切换语言,这时候要查找当前宿主机的内网地址
这时候已经可以正常访问并看到mq的状况了