RocketMQ-基于Docker的安装部署

460 阅读1分钟

RocketMQ-基于Docker的安装部署

1.下载rocketmq及rocketmq-console

docker pull rocketmqinc/rocketmq
docker pull styletang/rocketmq-console-ng

安装完成后可通过docker images查看镜像 image.png

2.初始化文件夹

//供 namesrv 服务使用
mkdir -p  /docker/rocketmq/data/namesrv/logs   
mkdir -p  /docker/rocketmq/data/namesrv/store
//供 broker 服务使用
mkdir -p  /docker/rocketmq/data/broker/logs   
mkdir -p  /docker/rocketmq/data/broker/store 
mkdir -p  /docker/rocketmq/conf

初始化配置文件,在/docker/rocketmq/conf目录下新建一个配置文件

vi /docker/rocketmq/conf/broker.conf

broker.conf文件内容:需要将brokerIP1更改为你的虚拟机IP

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = ${虚拟机IP}

3. 创建容器

需要依次创建namesrv->broker->rocketmq-console

3.1 创建namesrv容器

docker run -d \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /docker/rocketmq/data/namesrv/logs:/root/logs \
-v /docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq \
sh mqnamesrv

解释:

  • -d 以守护线程方式启动
  • --restart=always docke重启时候镜像自动重启
  • –name rmqnamesrv 设置容器名称
  • -p 9876:9876 端口映射
  • -v 把容器内的/root/logs日志路径挂载到宿主机的自定义路径中(需根据自己的路径自行创建)
  • -v 把容器内的/root/store数据存储目录挂载到宿主机的自定义目录(需根据自己的路径自行创建)
  • rocketmqinc/rocketmq 使用镜像的名称
  • sh mqnamesrv 执行name server脚本

3.2 创建Broker容器

docker run -d  
    --name rmqbroker 
    --link rmqnamesrv:namesrv 
    -p 10911:10911 
    -p 10909:10909 
    -v /docker/rocketmq/data/broker/logs:/root/logs 
    -v /docker/rocketmq/data/broker/store:/root/store 
    -v /docker/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf 
    -e "NAMESRV_ADDR=namesrv:9876" 
    -e "MAX_POSSIBLE_HEAP=200000000" 
    rocketmqinc/rocketmq sh mqbroker -c  ../conf/broker.conf

解释

  • --link rmqnamesrv:namesrv 和rmqnamesrv容器通信
  • -p 10911:10911 把容器的非vip通道端口挂载到宿主机
  • -p 10909:10909 把容器的vip通道端口挂载到宿主机
  • -e “NAMESRV_ADDR=namesrv:9876” 指定namesrv的地址为本机namesrv的ip地址:9876
  • -e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker 指定broker服务的最大堆内存(暂未配置)
  • sh mqbroker -c …/conf/broker.conf 读取…/conf/broker.conf配置并启动broker

3.3 创建rocketmq-console容器

docker run -d \
--restart=always \
--name rmqconsoleng \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=${虚拟机IP}:9876 
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
styletang/rocketmq-console-ng

解释:

  • -e "JAVA_OPTS=-Drocketmq.namesrv.addr=your_nameserver_address:9876 设置nameserver服务的地址
  • -p 9999:8080 容器端口映射到宿主机的8080端口

最后就可以正常访问了,访问地址:http://虚拟机IP:9999

image.png

image.png

参考文章

  1. # docker部署安装rocketmq

  2. # Docker - RocketMQ部署