? ? ? ? ? ? ? ? ? ? ? ? Rocketmq 4.2.0 基于Docker構(gòu)建鏡像
一:環(huán)境準(zhǔn)備:
Centos7,Dokcer18.03.1-ce
官方項(xiàng)目地址:https://github.com/apache/incubator-rocketmq-externals?里面有rocketmq的docker運(yùn)行文檔
二:克隆官方項(xiàng)目到本地宿主機(jī):
git?clone https://github.com/apache/rocketmq-externals.git
主要用到rocket-docker中的腳本,分別為rocket4.0.0和4.1.1的dockerfile,鏡像構(gòu)建,和鏡像運(yùn)行腳本,如圖:


注意:克隆下來(lái)的腳本都是不夠權(quán)限的? ? 執(zhí)行chmod+x 腳本名? 給予執(zhí)行權(quán)限
如下分別為namesrv和broker的鏡像構(gòu)建腳本(通過其目錄下的DockerFile構(gòu)建)
sudo docker build --build-arg version=4.2.0 -t apache/incubator-rocketmq-namesrv:4.2.0 .
sudo docker build --build-arg version=4.2.0 -t apache/incubator-rocketmq-broker:4.2.0 .
下面這兩條制定指令為namesrv和broker的運(yùn)行指令
sudo docker run -d -p 9876:9876 -v /data/conf:/opt/conf -v /opt/logs:/opt/logs -v /opt/store:/opt/store --name rmqnamesrv -e "JAVA_OPT_EXT=-server -Xms128m -Xmx256m -Xmn128m" apache/incubator-rocketmq-namesrv:4.2.0
sudo docker run -d -p 10911:10911 -p 10909:10909 -v /data/conf/rocketmq-conf/conf:/opt/rocketmq-4.2.0/conf -v /opt/logs:/opt/logs -v /opt/store:/opt/store --name rmqbroker -e "NAMESRV_ADDR=192.168.60.128:9876" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" apache/incubator-rocketmq-broker:4.2.0
可以看到這里我的rocketmq版本都是4.2.0? rocketmq4.2.0的dockerfile,構(gòu)建腳本,和啟動(dòng)腳本
所以我是基于4.0.0的基礎(chǔ)上改dockerfile和構(gòu)建腳本和啟動(dòng)腳本。其中有幾個(gè)需要注意的點(diǎn):
(圖中為Rocketmq4.0.0的namesrv和broker的Dockerfile)


1:ENV ROCKETMQ_VERSION 4.2.0這里改成我們的rocketmq版本
2:ENV ROCKET_HOME /opt/rocketmq4.2.0 這里同樣改成我們的版本
3:dockerfile里的那個(gè)rocketmq-all-4.2.0-bin-release.zip的下載路徑變了,所以得根據(jù)實(shí)際的下載地址更改
https://dist.apache.org/repos/dist/release/rocketmq/4.2.0/(正確地址)
4:dockerfile中的EXPOPOSE和VOLUME:分別為端口映射和掛載數(shù)卷路徑(配置集群的話根據(jù)情況進(jìn)行修改)
5:設(shè)置時(shí)區(qū),因?yàn)槿萜骼锏臅r(shí)間會(huì)不對(duì)
改完后的namesrv和broke的Dockerfile如下圖:


三:運(yùn)行dockerfile構(gòu)建腳本和運(yùn)行腳本(或者輸入上面的指令)
./docker_build.sh和./docker_run.sh
輸入指令:docker? images? 可以看到生成的相應(yīng)的namesrv和broker鏡像

輸入?docker? ps -a?可以看到所有的docker容器? 指令 docker ps 指令查看正在運(yùn)行的所有docker容器

指令? docker? exec -it 容器ID? bash進(jìn)入容器內(nèi)進(jìn)行操作
四:rocketmq控制臺(tái) (操作很簡(jiǎn)單)
1:拉取鏡像
docker?pull?styletang/rocketmq-console-ng?
2:創(chuàng)建容器
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8001:8080 -t styletang/rocketmq-console-ng
3、打開控制臺(tái)(界面很炫酷) 本地請(qǐng)?jiān)L問:localhost:8001

結(jié)尾:完整的Dockerfile,docker-compose.yml和使用說明可在我的Github上可以看到.