RocketMQ Docker部署

1. 镜像制作前准备

1.1 clone rocketmq-docker项目的代码

#官方的docker地址
git clone https://github.com/apache/rocketmq-docker.git
复制代码

执行上面命令克隆下来这项目的代码。

2. 构建镜像

这里需要构建的镜像有两个

  • rocketmq-dashboard镜像(web控制台)
  • rocketmq镜像(NameSrv和Broker)

2.1 rocketmq镜像构建

cd image-build
sh build-image.sh RMQ-VERSION BASE-IMAGE
复制代码

原理:通过版本和BASE-IMAGE(支持centos, alpine)来判断是使用 Dockerfile-centos文件还是Dockerfile-alpine文件来构建镜像。

等待镜像构建完成,然后通过docker命令查看

docker image ls
复制代码

2.2 rocketmq-dashboard镜像构建

和构建rocketmq镜像一样,我们依葫芦画瓢构建rocketmq-dashboard镜像

cd image-build
sh build-image-dashboard.sh dashboard-VERSION BASE-IMAGE
复制代码

BASE-IMAGE只支持centos

等待镜像构建完成。

docker image ls
复制代码

3. Docker-compose 安装

这里为什么用Docker-compose 安装呢?因为RocketMQ的安装的东西有三个部分:namesrv、broker、rocketmq-dashboard ,用Docker-compose安装起来比较方便。

3.1 环境准备

本地已经有了rocketmq-dashboard镜像和rocketmq镜像

在构建rocketmq-dashboard的时候可以修改Dockerfile-centos-dashboard文件的最后一条命令如:ENTRYPOINT ["java","${JAVA_OPTS}", "-jar", "bin/rocketmq-dashboard.jar"]; 这样构建的镜像可以调节JVM的内存大小.好处就是如果你机器内存小就可以将这个内存设置的小一点

3.2 RockerMQ 单机部署

3.2.1 NameSrv的Docker宿主机环境

主要配置的是日志路径以及存储路径。(挂载路径)

mkdir -p /root/rocketmq/data/namesrv/logs

mkdir -p /root/rocketmq/data/namesrv/store
复制代码

3.2.2 Broker的Docker宿主机环境

主要创建日志、数据存储、以及配置存放的挂载路径

mkdir -p /root/rocketmq/data/broker/logs
mkdir -p /root/rocketmq/data/broker/store
mkdir -p /root/rocketmq/etc/broker
复制代码

3.2.3 Broker配置文件创建

nano /root/rocketmq/etc/broker/broker.conf
复制代码

文件内容如下:

brokerClusterName = mxsm-docker
brokerName = mxsm-docker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# Docker环境需要设置成宿主机IP
#brokerIP1 = {docker宿主机IP}
brokerIP1 = 192.168.43.128
复制代码

例如:在Docker宿主机通过命令查询到的IP地址为 192.168.43.128 那么这个地方就设置为 192.168.43.128

3.2.4 编写Docker-compose文件

这里编写Docker-compose文件版本使用的3,有的人docker可能版本没这么高,可以使用2看个人调整。

version: '3'
services:
  #Service for nameserver
  namesrv:
    image: apacherocketmq/rocketmq:4.9.2
    container_name: rocketmq-namesrv
    ports:
      - 9876:9876
    environment:
      - JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m
    volumes:
      - /root/rocketmq/data/namesrv/logs:/root/logs
    command: sh mqnamesrv

  #Service for broker
  broker:
    image: apacherocketmq/rocketmq:4.9.2
    container_name: rocketmq-broker
    links:
      - namesrv
    depends_on:
      - namesrv
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn256m
    volumes:
      - /root/rocketmq/data/broker/logs:/home/rocketmq/logs
      - /root/rocketmq/data/broker/store:/home/rocketmq/store
      - /root/rocketmq/etc/broker/broker.conf:/home/rocketmq/conf/broker.conf
    command: sh mqbroker -c /home/rocketmq/conf/broker.conf

  #Service for rocketmq-dashboard
  dashboard:
    image: apache/rocketmq-dashboard:1.0.0-centos
    container_name: rocketmq-dashboard
    ports:
      - 8080:8080
    links:
      - namesrv
    depends_on:
      - namesrv
    environment:
      - NAMESRV_ADDR=namesrv:9876
复制代码

运行命令:

docker-compose -f ./docker-compose.yml up
复制代码

然后查看运行的情况。

在运行的过程中总是发现有这样的一个问题:rocketmq-broker exited with code 253,也没日志打印。这里可能是挂载路径没有权限的问题。加上权限即可。

然后在本地登录web控制台进行验证

4. 总结

  • 总的来说大家可以根据官方的 rocketmq-docker 项目来进行docker部署。这里也存在一些问题,我开始用官方的创建镜像很慢,特别是下载和编译的时候。这里也可以在本地将项目进行编译然后修改一下从本地进行镜像构建。这样构建有一个好处,在本地能够构建正在开发的版本镜像。
  • 官方的Docker-compose没有将rocketmq-dashboard控制台进行运行。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用RocketMQ Docker镜像部署RocketMQ,你可以按照以下步骤进行操作: 1. 首先,你需要创建一个用于存储RocketMQ数据的目录。你可以使用以下命令来创建这些目录: ``` mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf ``` 2. 接下来,你需要运行`rmqnamesrv`容器来启动RocketMQ的Namesrv服务。你可以使用以下命令来运行容器: ``` docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876 -v /docker/rocketmq/nameserver/logs:/root/logs -v /docker/rocketmq/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv ``` 3. 然后,你需要运行`rmqbroker`容器来启动RocketMQ的Broker服务。你可以使用以下命令来运行容器: ``` docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v /docker/rocketmq/data/broker/logs:/root/logs -v /docker/rocketmq/data/broker/store:/root/store -v /docker/rocketmq/conf/broker.conf:/opt/docker/rocketmq/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/docker/rocketmq/broker.conf ``` 通过按照以上步骤,你可以使用RocketMQ Docker镜像来部署RocketMQ并运行Namesrv和Broker服务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装RocketMQ详细教程](https://blog.csdn.net/w598882992/article/details/127509962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Rocketmq详解02-mq安装](https://blog.csdn.net/a2868221132/article/details/118156511)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值