docker-compose 配置rocketmq
docker-compose编排rocketmq
·
docker-compose 配置rocketmq
操作步骤
1.拉取rocketmq镜像
dockerhub地址:https://hub.docker.com/u/library
拉取apache/rocketmq
和styletang/rocketmq-console-ng
两个即可
2.配置docker-compose.yml配置文件
docker-compose.yml文件配置
version: '3'
services:
rmqnamesrv:
image: apache/rocketmq:4.9.4
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- F:\docker-install-path\native_volume\rocketmq\server\logs:/opt/rocketmq/logs
- F:\docker-install-path\native_volume\rocketmq\server\store:/opt/rocketmq/store
command: sh mqnamesrv
networks:
rmq:
aliases:
- rmqnamesrv
rmqbroker:
image: apache/rocketmq:4.9.4
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
volumes:
- F:\docker-install-path\native_volume\rocketmq\broker\broker-logs:/opt/rocketmq/logs
- F:\docker-install-path\native_volume\rocketmq\broker\broker-store:/opt/rocketmq/store
- F:\docker-install-path\native_volume\rocketmq\broker\config\broker.conf:/opt/rocketmq-4.3.2/broker.conf
environment:
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: "-Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /opt/rocketmq-4.3.2/broker.conf
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqbroker
rmqconsole:
image: styletang/rocketmq-console-ng:1.0.0
container_name: rmqconsole
ports:
- 6087:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqconsole
networks:
rmq:
name: rmq
driver: bridge
3.配置broker.conf文件
broker.conf文件配置
# 所属集群名字
brokerClusterName=DefaultCluster
# broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
# 在 broker-b.properties 使用: broker-b
brokerName=broker-a
# 0 表示 Master,> 0 表示 Slave
brokerId=0
# Broker 对外服务的监听端口
listenPort=10911
# 删除文件时间点,默认凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=48
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
# nameServer地址,分号分割
namesrvAddr=rmqnamesrv:9876
# 如果是本地程序调用云主机 mq,这个需要设置成 云主机 IP
# 启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed
# 解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP
brokerIP1={宿主机ip}
4.问题踏坑
1.rmqnamesrv启动失败
原因:rocketmq
镜像中制作没有将启动命令打包进去,网上各种配置都没有将command
命令贴上。
解决方案:在docker-compose.yml
文件中rmqnamesrv
配置command: sh mqnamesrv
踏坑实录:
上述问题网上解决方案:
1.在docker-compose.yml
文件中配置
services:
rmqnamesrv:
...
stdin_open: true
tty: true
此举只为启动一个容器并未启动容器中的rmqnamesrv
,并将导致后续误导rmqconsole
连接不成功问题。
更多推荐
所有评论(0)