拉取镜像
docker pull foxiswho/rocketmq:server-4.5.1
docker pull foxiswho/rocketmq:broker-4.5.1
单机版
创建要挂载的目录
mkdir /usr/local/rocketmq
如果没有做这一步,下面允许创建容器命令的时候也会自动创建
window下:
创建 D:\rocket_home 文件夹即可(也可以在其他盘创建,在下面的命令中修改对应的值即可)
准备好配置文件
可以去安装目录下或者源码中获取到 原始的broker.conf 文件
下面主要是列出需要修改的部分,其他配置自行查阅官方文档。
在容器部署的话,一定要配置好才可以启动,不然无法访问(很重要)
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# 配置为Master接待
brokerId = 0
# 节点ip(默认会把容器的ip注册到namesrv)
brokerIP1=10.9.64.58
# 凌晨4点删除
deleteWhen = 04
fileReservedTime = 48
# 主从异步复制
brokerRole = ASYNC_MASTER
# 异步刷盘
flushDiskType = ASYNC_FLUSH
# namesrvAddr地址,集群的使用逗号分割
namesrvAddr=10.9.64.58:9876
# 自动创建topic,方便测试(生产发环境不要开放)
autoCreateTopicEnable=true
# 存储路径
storePathRootDir=D:\\rocket_home\\broker\\dataDir
# commitLog路径
storePathCommitLog=D:\\rocket_home\\broker\\dataDir\\commitlog
没有其他特别的要求的话,这个直接新建一个broker.conf,把上面的内容复制进去即可使用(存储路径修改一下)。
linux的放到 /usr/local/rocketmq/broker/conf/下
window的放到 D:\rocket_home\broker\conf
如果放到其他目录,下面的命令对应的参数修改一下即可
创建nameserver容器
docker create --name rocketmq-server -p 9876:9876 \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-e "JAVA_OPTS=-Duser.home=/opt" \
-v /usr/local/rocketmq/server/logs:/opt/logs \
-v /usr/local/rocketmq/server/store:/opt/store \
foxiswho/rocketmq:server-4.5.1
说明:
–name 指定容器名
-p 指定服务运行的端口
-v 映射目录或文件
window下执行的命令
docker create --name rocketmq-server -p 9876:9876 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" -v D:\rocket_home\namesrv\logs:/root/logs -v D:\rocket_home\namesrv\store:/opt/store foxiswho/rocketmq:server-4.5.1
创建broker 容器
docker create --name rocketmq-broker -p 10911:10911 -p 10909:10909 \
-e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-v /usr/local/rocketmq/broker/logs:/opt/logs \
-v /usr/local/rocketmq/broker/store:/opt/store \
-v /usr/local/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.5.1/conf/broker.conf \
foxiswho/rocketmq:broker-4.5.1 \
sh mqbroker -c /opt/rocketmq-4.5.1/conf/broker.conf
说明:
–name 指定容器名
-p 指定服务运行的端口
-v 映射目录或文件
window下执行的命令
docker create --name rocketmq-broker -p 10911:10911 -p 10909:10909 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -v D:\rocket_home\broker\logs:/opt/logs -v D:\rocket_home\broker\store:/opt/store -v D:\rocket_home\broker\conf\broker.conf:/opt/rocketmq-4.5.1/conf/broker.conf foxiswho/rocketmq:broker-4.5.1 sh mqbroker -c /opt/rocketmq-4.5.1/conf/broker.conf
启动容器
docker start rocketmq-server rocketmq-broker
可以看一下启动日志,检查一下是不是读取了配置文件启动的。如果界面显示的是容器的ip,证明没有获取到配置,这时候外部是无法访问到这个broker的。
开放端口
firewall-cmd --add-port=9876/tcp --permanent
重载入添加的端口:
firewall-cmd --reload
rocketmq管理工具
拉取镜像
docker pull styletang/rocketmq-console-ng:1.0.0
启动容器
docker run -d --name rocketmq-console -p 8180:8080 --link rocketmq-server:namesrv\
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876\
-Dcom.rocketmq.sendMessageWithVIPChannel=false"\
-t styletang/rocketmq-console-ng:1.0.0
说明:
–link rocketmq-server:namesrv 把容器名称宏定义为
rocketmq-server 是上面设置的 nameserver 容器的名称
window下执行的命令
docker run -d --name rocketmq-admin -p 8180:8080 --link rocketmq-server:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" styletang/rocketmq-console-ng:1.0.0
开放端口
firewall-cmd --add-port=8180/tcp --permanent
重载入添加的端口:
firewall-cmd --reload
访问rocketmq
打开浏览器,输入http://[宿主机的ip]:8180
这里看到的broker的ip显示的是宿主机的,一边是ok的