docker部署RocketMQ

本次基于RocketMQ的4.9.3版本
RocketMQ官网:https://rocketmq.apache.org/
RocketMQ官方的Docker版安装文档:https://github.com/apache/rocketmq-docker

1.安装启动

1.1 下载

将官方的code下载下来:https://github.com/apache/rocketmq-docker并解压。

1.2 本机构建镜像

进入构建目录并构建

1
2
3
cd image-build/
# 4.9.2是你的版本,centos表示会寻找image-build/Dockerfile-centos这个文件
./build-image.sh 4.9.3 centos

1.3 网络不顺畅时

注意,docker file里会下载rocketMQ的bin压缩包,大致如下:

1
2
3
4
5
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; \

这里如果有网络问题,请在这三个地方统一添加代理,例如:

1
curl -x http://你的代理地址 -L https://xxxxxxxxxxxxxxxx

一旦构建完成,你会看到如下提示:

1
Successfully tagged apacherocketmq/rocketmq:4.9.3

1.2 启动

官方的教程里,broker镜像的启动有些问题,会启动失败

1
2
3
4
5
6
mkdir -p /data/namesrv/logs;mkdir -p /data/broker/logs;mkdir -p /data/broker/store
chmod a+rw /data/namesrv/logs;chmod a+rw /data/broker/logs;chmod a+rw /data/broker/store

docker run -d -v /data/namesrv/logs:/home/rocketmq/logs --name rmqnamesrv -dit --restart=always -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro -p 9876:9876 apacherocketmq/rocketmq:4.9.3 sh mqnamesrv

docker run -d -v /data/broker/logs:/home/rocketmq/logs -v /data/broker/store:/home/rocketmq/store --name rmqbroker --restart=always -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro -e "NAMESRV_ADDR=你的namesrv容器的ip:9876" -p 10909:10909 -p 10911:10911 -p 10912:10912 apacherocketmq/rocketmq:4.9.3 sh mqbroker

2 Dashboard

2.1 网络顺畅时的构建

进入构建目录并构建

1
2
3
4
cd image-build/
chmod 755 ./build-image-dashboard.sh
# 这里是写死的1.0.0,你最好添加你的代理
sh ./build-image-dashboard.sh 1.0.0 centos

2.2 需要代理时

这里的构建一样需要对镜像添加代理

1
vim Dockerfile-centos-dashboard

这里有几个地方要注意:

  1. 所有的curl的地方需要添加代理
  2. wget也需要代理,方式为参考:wget -e “https_proxy=http://你的代理” -e “http_proxy=http://你的代理” -O /tmp/xxxxxxxxxxxxxxxx
  3. 这里会通过maven安装依赖,你需要对maven的settings.xml进行修改

你会在镜像文件里找到这一串:

1
2
3
4
5
6
7
8
RUN sed -i '159i \
<mirror> \
<id>nexus-tencentyun</id> \
<mirrorOf>*</mirrorOf> \
<name>Nexus tencentyun</name> \
<url>https://xxxxx</url> \
</mirror> \
' /usr/share/maven/conf/settings.xml

将前面的#去掉,然后将url替换为:https://maven.aliyun.com/repository/public

做完这三步之后,就可以执行命令了

2.3 启动

1
docker run --name rocketmq-dashboard -dit --restart=always  -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro  -p 6765:8080 apache/rocketmq-dashboard:1.0.0-centos

2.4 配置

浏览器打开你的dashboard,在ops这个tab输入你的nameserver的ip和端口,就完成了