1. 镜像制作前准备
1 clone rocketmq-docker项目的代码
#官方的docker地址git clone https://github.com/apache/rocketmq-docker.git复制代码
执行上面命令克隆下来这项目的代码。
2. 构建镜像
这里需要构建的镜像有两个
- rocketmq-dashboard镜像(web控制台)
- rocketmq镜像(NameSrv和Broker)
1 rocketmq镜像构建
cd image-buildsh build-image.sh RMQ-VERSION BASE-IMAGE复制代码
原理:通过版本和BASE-IMAGE(支持centos, alpine)来判断是使用 Dockerfile-centos文件还是Dockerfile-alpine文件来构建镜像。
等待镜像构建完成,然后通过docker命令查看
docker image ls复制代码
2 rocketmq-dashboard镜像构建
和构建rocketmq镜像一样,我们依葫芦画瓢构建rocketmq-dashboard镜像
cd image-buildsh 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安装起来比较方便。
1 环境准备
本地已经有了rocketmq-dashboard镜像和rocketmq镜像
在构建rocketmq-dashboard的时候可以修改Dockerfile-centos-dashboard文件的最后一条命令如:ENTRYPOINT ["java","${JAVA_OPTS}", "-jar", "bin/rocketmq-dashboard.jar"]; 这样构建的镜像可以调节JVM的内存大小.好处就是如果你机器内存小就可以将这个内存设置的小一点
2 RockerMQ 单机部署
2.1 NameSrv的Docker宿主机环境
主要配置的是日志路径以及存储路径。(挂载路径)
mkdir -p /root/rocketmq/data/namesrv/logsmkdir -p /root/rocketmq/data/namesrv/store复制代码
2.2 Broker的Docker宿主机环境
主要创建日志、数据存储、以及配置存放的挂载路径
mkdir -p /root/rocketmq/data/broker/logsmkdir -p /root/rocketmq/data/broker/storemkdir -p /root/rocketmq/etc/broker复制代码
2.3 Broker配置文件创建
nano /root/rocketmq/etc/broker/broker.conf复制代码
文件内容如下:
brokerClusterName = mxsm-dockerbrokerName = mxsm-docker-abrokerId = 0deleteWhen = 04fileReservedTime = 48brokerRole = ASYNC_MASTERflushDiskType = ASYNC_FLUSH# Docker环境需要设置成宿主机IP#brokerIP1 = {docker宿主机IP}brokerIP1 = 192.168.43.128复制代码
例如:在Docker宿主机通过命令查询到的IP地址为
192.168.43.128
那么这个地方就设置为192.168.43.128
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控制台进行运行。
来源地址:https://blog.csdn.net/2301_76607156/article/details/130063183