docker 安装 RocketMQ

发布时间 2023-10-24 11:00:17作者: 之辰

安装 rocketmq

拉取 rocketmq 镜像

docker pull apache/rocketmq

运行 namesrv

docker run -d \
        --name rmqnamesrv \
        --privileged=true \
        -p 9876:9876 \
        -v /tool/rocketmq/logs:/home/rocketmq/logs \
        -v /tool/rocketmq/store:/home/rocketmq/store \
        -e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq:latest \
# 应该是硬性规定namesrv的服务名为mqnamesrv
sh mqnamesrv

--name:容器名

--privileged 提供root权限

-p 映射端口 宿主机端口:容器端口

-v 文件/目录挂载 宿主机目录:容器内部目录

-e 启动配置

启动 broker,需要指定 namesrv 的地址,broker 默认监听的端口是10909,10911,10912

docker run -d \
	--name rmqbroker \
	--link rmqnamesrv:namesrv \
	--privileged=true \
	-p 10909:10909 \
	-p 10911:10911 \
	-p 10912:10912 \
	-v /tool/rocketmq/broker/logs:/home/rocketmq/logs \
	-v /tool/rocketmq/broker/store:/home/rocketmq/store \
	-v /tool/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf \
	-e "NAMESRV_ADDR=namesrv:9876" \
	-e "MAX_POSSIBLE_HEAP=200000000" \
	# 可以通过 BROKER_PORT=XXXX 指定当前broker使用端口
apache/rocketmq:latest \
sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf

可以使用默认的配置文件,也可以自定义配置,配置文件示例:

terName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# namesrv 主机地址
namesrvAddr=服务器ip:9876
# 当前 broker 主机地址
brokerIP1=服务器ip
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911iskMaxUsedSpaceRatio=95

sh -c 指定配置文件启动容器

启动控制台

拉取控制台镜像

docker pull pangliang/rocketmq-console-ng

启动控制台容器,一定要先启动 namesrv

docker run -d \
        --restart=always \
        --name rmq-admin \
        -e "JAVA_OPTS=-Drocketmq.namesrv.addr=服务器ip:9876  \
                -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
        -p 9999:8080 \
pangliang/rocketmq-console-ng \
sh rmq-admin

--restart 一直自动重启

注意:如果要进行挂载,要确保你的宿主机中挂载的文件目录都要有足够的权限。自己玩的话直接给最大权限就行或者在docker 创建容器时指定--privileged=true给当前容器指定宿主机的root权限

# 目录最大权限777,文件最大666
chmod 777 -R 挂载文件