docker-compose 配置rocketmq

docker-compose 配置rocketmq

操作步骤

1.拉取rocketmq镜像

dockerhub地址:https://hub.docker.com/u/library

拉取apache/rocketmqstyletang/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连接不成功问题。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值