自己本地搭建rocketmq开发环境还是用docker方便点,之前搭建一直有些小问题,最近专项解决了下,终于搞定了,这里整理分享下
环境准备
因笔者用的MacBook,所以会主要以Mac为主讲解,其他环境区别不大
首先请准备好docker环境,推荐docker desktop
,无他,点点点就完事了,不用的时候不启动,开发机紧张的内存问题得到了心理上的安慰。
还需要安装好docker-compose
,请自行参考安装教程点这里
注:docker desktop
自带了docker-compose,所以不需要再单独安装compose了
编译rocketmq镜像
环境搞定了,我们开始搭建rocketmq,直接用官方推荐的docker镜像即可。
镜像下载地址:https://github.com/apache/rocketmq-docker
我们先通过git
把代码拉下来,打开命令行复制粘贴
git clone https://hub.fastgit.org/apache/rocketmq-docker.git
clone完成后,继续cd rocketmq-docker/image-build
到image-build目录下
目前最新版本为4.9.2
,我们就以这个版本为例:
继续输入下列指令
sh build-image.sh 4.9.2 alpine
等待完成就即可,如果报错,请自行根据错误查找原因。只要环境没问题,编译完成后我们能得到apacherocketmq/rocketmq
镜像
至此,我们已经完成了一半的工作。
编写docker-compose配置
鲁迅:授人以鱼不如授人以渔和鱼
有经验的同学此时已经急不可耐了,鱼拿去。
完整的docker-compose.yml
文件
version: '3'
services:
namesrv:
image: apacherocketmq/rocketmq:4.9.2-alpine
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/namesrv/logs:/home/rocketmq/logs
command: sh mqnamesrv
restart: always
broker:
image: apacherocketmq/rocketmq:4.9.2-alpine
container_name: rmqbroker
links:
- namesrv
ports:
- 10909:10909
- 10911:10911
- 10912:10912
environment:
- NAMESRV_ADDR=namesrv:9876
volumes:
- ./data/broker/logs:/home/rocketmq/logs
- ./data/broker/store:/home/rocketmq/store
- ./data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.2/conf/broker.conf
- ./data/broker/runbroker.sh:/home/rocketmq/rocketmq-4.9.2/bin/runbroker.sh
command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.2/conf/broker.conf
depends_on:
- namesrv
restart: always
rmqconsole:
image: candice0630/rocketmq-console-ng:2.0
container_name: rmqconsole
ports:
- 9001:8080
environment:
JAVA_OPTS: -Drocketmq.namesrv.addr=namesrv:9876
-Dcom.rocketmq.sendMessageWithVIPChannel=false
depends_on:
- namesrv
restart: always
上面一共三个images,namesrv
、broker
和rmqconsole
熟悉docker-compose
的同学可以直接跳过这部分了
本部分主要结合上面的配置来说,不适应的根据自己的习惯自行更改
先建立一个rocketmq
文件夹,然后在文件夹下面创建docker-compose.yml
文件,复制上面的内容进去。在docker-compose.yml
同级目录下创建data
文件夹,在data
文件夹下分别创建broker
和namesrv
文件夹,broker
目录下分别创建conf
、logs
和store
文件夹。namesrv
目录下创建logs
目录,logs
目录下创建rocketmqlogs
目录,这样所有的目录创建完成。自定义的broker.conf
文件放到data/broker/conf
目录下。