M1使用docker部署rocketmq单机版

本篇仅简单讲述如何使用docker搭建单机版rocketmq,想在mac M1环境中构建rocketmq的小伙伴儿看过来哦

一.环境介绍

以下为本人部署时的环境介绍

  • 基础环境:mac M1
  • 本地docker版本:20.10.6 (注:docker版本没那么多说道,不用太在意)

二.相关镜像编译

由于M1是arm架构,docker hub中的rocketmq 和 rocketmq-console-ng控制台都需要自己编译镜像

1. 编译rocketmq镜像

我已编译好一版,可以直接拿来用[candice0630/rocketmq:5.0.0-alpine]

  • 先down下代码 :git clone https://github.com/apache/rocketmq-docker.git
  • 按照readme中的步骤执行命令
cd image-build
sh build-image.sh RMQ-VERSION BASE-IMAGE
(我执行的:sh build-image.sh 4.8.0 alpine )
  • 上一步成功后运行 docker images


    image.png

2.编译rocketmq-console-ng镜像

我已编译好一版,可以直接拿来用[candice0630/rocketmq-console-ng:2.0]

  • 先down代码:git clone https://github.com/apache/rocketmq-externals.git
  • 代码下载完成后先进入rocketmq-console目录
  • 执行 mvn clean package -Dmaven.test.skip=true 会在./target目录下生成一个jar包
  • 将jar包copy到./src/main/docker,然后 进入该目录执行 docker build -t rocketmq-console-ng:2.0 .
image.png
  • 然后就坐等编译成功就好啦

!!重点强调:正常情况下只要执行(mvn clean package -Dmaven.test.skip=true docker:build)命令就可以编译docker镜像,但是我失败了 jar包编译成功,但是打docker镜像报错,所以我分别执行两步骤!!

3.broker.conf配置

由于咱们是docker构建服务,我在使用第三方rocketmq-client包创建生产者时总是使用docker分配的内网ip进行连接,因连接不通,所以我们需要修改broker配置,使其用本地ip进行连接。具体配置如下:


image.png

三.docker-compose配置

version: '3'
services:
  namesrv:
    image: apacherocketmq/rocketmq:4.8.0-alpine
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    command: sh mqnamesrv
  broker:
    image: apacherocketmq/rocketmq:4.8.0-alpine //这儿是自己编译的镜像
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    volumes:
    //这儿将本地的broker.conf配置文件挂在到容器中
      - '本机broker.conf目录'/broker.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
    command: sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
    depends_on:
      - namesrv
  mqconsole:
    image: candice0630/rocketmq-console-ng:2.0 //这儿是自己编译的ng镜像
    container_name: rmqconsole
    ports:
      - 19876:8080
    environment:
      JAVA_OPTS: -Drocketmq.config.namesrvAddr=namesrv:9876 -Drocketmq.config.isVIPChannel=false
    depends_on:
      - namesrv

四.运行

使用docker-compose执行第三部配置好的yml文件
eg:docker-compose -f rocketmq.yml up -d

然后我就成功啦!!


image.png

再访问localhost:19876 rocketmq控制台进行简单测试

五.总结

rocketmq目前本人还在学习阶段,对docker了解也较浅,所以目前先简单介绍学习rocketmq的第一步 本地部署。希望此篇文章可以让小伙伴儿们避免一些坑

你可能感兴趣的:(M1使用docker部署rocketmq单机版)