- A+
所属分类:Java
之前写过4.2.0版本基于Docker对RocketMQ的部署。
最近根据之前的文档去部署,发现由于升级,以前的操作不能使用了。
下面是2021年11月份部署的操作步骤。
首先是生成Docker镜像的脚本从原有的git工程迁移到了一个独立的工程
rocketmq-docker中。
工程的README.md也描述了脚本的使用手册。
下面具体讲一下根据使用说明操作,排的一些坑。
生成RocketMQ镜像
首先下载工程
wget https://github.com/apache/rocketmq-docker.git
执行工程下的脚本生成镜像。
cd image-build #sh build-image.sh RMQ-VERSION BASE-IMAGE sh build-image.sh 4.9.2 centos
该脚本会执行镜像脚本Dockerfile-centos,该脚本在下载rocketmq镜像,并解压处理的脚本会有问题。
需要将
RUN set -eux; \ curl -L https://archive.apache.org/dist/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip -o rocketmq.zip; \ curl -L https://archive.apache.org/dist/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip.asc -o rocketmq.zip.asc; \ #https://www.apache.org/dist/rocketmq/KEYS curl -L https://www.apache.org/dist/rocketmq/KEYS -o KEYS; \ \ gpg --import KEYS; \ gpg --batch --verify rocketmq.zip.asc rocketmq.zip ; \ unzip rocketmq.zip ; \ mv rocketmq-all*/* . ; \ rmdir rocketmq-all* ; \ rm rocketmq.zip rocketmq.zip.asc KEYS
改为
RUN set -eux; \ curl -L https://archive.apache.org/dist/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zip -o rocketmq.zip; \ curl -L https://archive.apache.org/dist/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zip.asc -o rocketmq.zip.asc; \ #https://www.apache.org/dist/rocketmq/KEYS curl -L https://www.apache.org/dist/rocketmq/KEYS -o KEYS; \ \ gpg --import KEYS; \ gpg --batch --verify rocketmq.zip.asc rocketmq.zip ; \ unzip rocketmq.zip ; \ mv rocketmq*/* . ; \ rm -f rocketmq.zip rocketmq.zip.asc KEYS ;\ rmdir rocketmq*
镜像生成以后,镜像名称为apacherocketmq/rocketmq:4.9.2
启动NameServer
docker run -d --restart=always --name mq-namesrv \ --network=host \ -v ${PATH}/data/namesrv/logs:/home/rocketmq/logs \ apacherocketmq/rocketmq:4.9.2 sh mqnamesrv
启动Broker
docker run -d --restart=always --name mq-broker \ --network=host \ -v ${PATH}/data/broker/logs:/home/rocketmq/logs \ -v ${PATH}/data/broker/store:/home/rocketmq/store \ -v ${PATH}data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.2/conf/broker.conf \ -e "NAMESRV_ADDR=172.16.35.14:9876" \ apacherocketmq/rocketmq:4.9.2 sh mqbroker -c ../conf/broker.conf
生产RocketMQ Dashboard镜像
执行工程下的脚本生成镜像。
#cd image-build && sh build-image-dashboard.sh `VERSION` centos sh build-image-dashboard.sh 1.0.0 centos
运行Dashboard
docker run -d --name mq-console \--network=host \ apacherocketmq/rocketmq-dashboard:1.0.0-centos
默认的镜像生成脚本中,没有办法传JVM参数。所以,在dashbaord运行起来以后,需要在运维界面,设置NameServer的地址信息,如下图所示:
image.png
如果想要固定设置NameServer地址,可以修改脚本Dockerfile-centos-dashboard,最后一行:
ENTRYPOINT ["java", "-jar", "bin/rocketmq-dashboard.jar"];
将其改为:
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar bin/rocketmq-dashboard.jar"];
运行实例脚本改为
docker run -d --name mq-console \ --network=host \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=${NameSrvIp}:${NameSrvPort} -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ doyoungdy/rocketmq-dashboard:1.0.0-centos