一. 下载安装包并解压至安装目录
wget https://downloads.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
yum install -y unzip zip
mkdir -p /opt/rocketmq-image
cd /opt/rocketmq-image && unzip rocketmq-all-4.9.3-bin-release.zip
cd /opt/rocketmq-image/rocketmq-4.9.3 && rm -rf README.md NOTICE LICENSE benchmark
二. 创建数据和日志目录
mkdir -p /opt/rocketmq/store/{commitlog,consumequeue,index}
mkdir -p /opt/rocketmq/logs
三. 修改rocketmq配置
vim /opt/rocketmq-image/rocketmq-4.9.3/conf/broker.conf
brokerClusterName=rocketmq-cluster
brokerName=broker-a
brokerId=0
brokerIP1=192.168.0.132
namesrvAddr=localhost:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911
deleteWhen=04
fileReservedTime=48
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
storePathRootDir=/opt/rocketmq/store
storePathCommitLog=/opt/rocketmq/store/commitlog
storePathConsumeQueue=/opt/rocketmq/store/consumequeue
storePathIndex=/opt/rocketmq/store/index
storeCheckpoint=/opt/rocketmq/store/checkpoint
abortFile=/opt/rocketmq/store/abort
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
四. 修改log日志配置文件
cd /opt/rocketmq-image/rocketmq-4.9.3/conf
sed -i 's#${user.home}#/opt/rocketmq#g' *.xml
五. 编写启动脚本(由于Dockerfile只能执行一个CMD或ENTRYPOINT,而现在需要在一个dockerfile里启动nameserver和broker两个进程)
cd /opt/rocketmq-image/rocketmq-4.9.3 && vim start.sh
cd /opt/rocketmq-4.9.3/bin && export JAVA_OPT=" -Duser.home=/opt" && sh mqnamesrv &
cd /opt/rocketmq-4.9.3/bin && export JAVA_OPT=" -Duser.home=/opt" && sh mqbroker -n localhost:9876 -c /opt/rocketmq-4.9.3/conf/broker.conf
六. 编写Dockerfile文件并构建镜像
cd /opt/rocketmq-image && vim Dockerfile
FROM openjdk:8-jdk
LABEL maintainer=frank
ENV JVM_XMS="4g" \
JVM_XMX="4g" \
JVM_XMN="2g"
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
COPY rocketmq-4.9.3 /opt/rocketmq-4.9.3
RUN mkdir -p /opt/rocketmq/store/{commitlog,consumequeue,index}
RUN mkdir -p /opt/rocketmq/logs
VOLUME ["/opt/rocketmq/logs", "/opt/rocketmq/store", "/opt/rocketmq-4.9.3/conf"]
EXPOSE 9876
EXPOSE 10911
RUN chmod +x /opt/rocketmq-4.9.3/bin/mqnamesrv
RUN chmod +x /opt/rocketmq-4.9.3/bin/mqbroker
CMD cd /opt/rocketmq-4.9.3/ && sh start.sh
cd /opt/rocketmq-image && docker build -f Dockerfile -t rocketmq:4.9.3 .
七. 利用上一步Dockerfile构建的镜像启动容器
docker run -d -p 9876:9876 -p 10911:10911 --name RocketMQ-4.9.3 -v /opt/rocketmq/logs:/opt/rocketmq/logs -v /opt/rocketmq/store:/opt/rocketmq/store rocketmq:4.9.3
docker exec -it 上一步启动成功的容器ID /bin/bash
如果启动成功,进入容器后利用jps可以看到如下两个进程
NamesrvStartup
BrokerStartup