网上的不太全,我做了一些补充,参考:

https://www.jianshu.com/p/882d37ca831f

https://github.com/apache/rocketmq-docker

首先,准备一个你要临时放置脚本的目录(文件夹),该目录和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部署rocketMQ控制台踩坑 rocket docker_git

第四步,启动容器

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的容器

 

docker部署rocketMQ控制台踩坑 rocket docker_git_02

 第六步:装一个可视化管理,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/#/ 进入到可视化面板界面,觉得英文不舒服的可以右上角切换语言,这时候要查找当前宿主机的内网地址

docker部署rocketMQ控制台踩坑 rocket docker_docker_03

 

 

docker部署rocketMQ控制台踩坑 rocket docker_git_04

 

 

 这时候已经可以正常访问并看到mq的状况了

docker部署rocketMQ控制台踩坑 rocket docker_docker_05