RocketMQ:Docker构建部署RocketMQ:4.9.2
1. 构建Namesrv脚本
1.1 创建Dockerfile文件(Java8版本RocketMQ4.8.0先看下方3.3内容)
编辑Dockerfile文件,vim Dockerfile-namesrv
内容:
1.2. 构建namesrv镜像脚本
编辑脚本,vim build-namesrv.sh
内容:
1.3. 启动容器脚本
编辑启动脚本,vim start-namesrv.sh
内容:
2. 构建Broker脚本
2.1. 创建Dockerfile文件
编辑Dockerfile文件,vim Dockerfile-broker
内容:
2.2. 构建broker镜像脚本
编辑脚本,vim build-broker.sh
内容:
2.3. 启动容器脚本
编辑启动脚本,vim start-broker.sh
内容:
3. 配置启动RocketMQ
3.1. 创建RocketMQ存储目录和日志目录
mkdir -p /home/data/rocketmq/{logs,store,broker} && touch /home/data/rocketmq/broker/broker.conf
3.2. 创建网桥
docker network create rmq-bridge
3.3. 构建namesrv镜像, 启动namesrv容器
对于脚本增加执行权限, chmod +x *.sh
先构建namesrv镜像,./build-namesrv.sh
; 启动namesrv容器(必须先启动namesrv,然后启动broker), ./start-namesrv.sh
PS: 网上说Java8和RocketMQ4.8.0启动namesrv容器会报错,我用的Java11和RocketMQ4.9.2没有报错。。我用的应该是Java8和RocketMQ4.9.2(因为Dockerfile的第一行From基于Java8):
可以先试试能不能启动,然后再修改
报错信息:
ubuntu@ubuntu:/usr/local/rocketmq$ /usr/local/rocketmq/bin/runserver.sh: 70: [[: not found
Unrecognized option: -Xlog:gc*:file=/dev/shm/rmq_srv_gc_%p_%t.log:time,tags:filecount=5,filesize=30M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
报错解释:
Java版本使用的是java8,
由于在linux环境(Ubuntu发行版,其它发行版未知)下, 直接启动mqnamesrv会报错,
具体原因是sunserver.sh第69行中判定java版本的脚本有问题, 导致判定java版本为9以上,进而导致程序进入第70行if else结构中的else分支中,java GC参数无法识别而报错.
这里使用sed将第70行,第75-79行注释掉.
解决方案:
在Dockerfile-namesrv文件中增加&& rm -rf rocketmq-${ROCKETMQ_VERSION}
&& cd ${NAMESRV_HOME}/bin
#下边新增两行, 脚本中注释对应代码
&& sed -i '70s/^/#/' runserver.sh
&& sed -i '75,79s/^/#/' runserver.sh
&& sed -i 's#-Xms[0-9]+[gm]#-Xms512m#g' runserver.sh
&& sed -i 's#-Xmx[0-9]+[gm]#-Xms512m#g' runserver.sh \
3.4. 构建broker镜像, 启动broker容器
然后构建broker镜像,./build-broker.sh
; 启动broker容器(必须先启动namesrv,然后启动broker), ./start-broker.sh
3.5. 查看
可以通过docker logs <容器名>
查看容器是否报错。
接下来为了便于操作,可以安装RocketMQ-Console
4. 构建启动rocketmq-console
4.1. 下载编译rocketmq-console
下载地址https://gitee.com/ralph81/rocketmq-console/repository/archive/master.zip
下载文件,修改配置文件(src/main/resources/application.properties)
使用maven打包,上传编译后的jar包
4.2. 编辑Dockerfile-console文件
4.3. 构建broker镜像脚本
编辑脚本, vim build-console.sh
内容:
4.4. 构建启动容器脚本
编辑脚本,vim start-console.sh
内容:
5. 浏览器登陆
浏览器登录 http://宿主机IP:8099
PS:账号密码在src/main/resources/users.properties中配置,管理员是admin/admin。
详情可参考CSDN博客
[RocketMQ]安装配置单节点RocketMQ、rocketmq-console,使用Java简单生产消费
__EOF__

本文链接:https://www.cnblogs.com/casoli/p/16109590.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)