1、准备工作目录和配置文件
rocketmq\_ conf/broker.conf\_ docker-compose.yml
在 rocketmq/conf/
目录下面,创建broker.conf文件:
# Broker所属的集群名称,默认是DefaultCluster
brokerClusterName=DefaultCluster# Broker的名称
brokerName=broker-a# Broker的ID,默认为0表示主节点,大于0表示从节点
brokerId=0 # 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true# 删除文件时间点,默认凌晨4点
deleteWhen=04# 文件保留时间,默认48小时
fileReservedTime=48# Broker的角色,ASYNC_MASTER(异步主节点),SYNC_MASTER(同步主节点),SLAVE(从节点)
brokerRole=ASYNC_MASTER# 刷盘类型:同步刷新(SYNC_FLUSH)、ASYNC_FLUSH 异步刷盘
flushDiskType=ASYNC_FLUSH# Broker服务地址,局域网使用填宿主机ip,如果需要给外部使用填公网ip
brokerIP1 = 192.168.0.117
在外层rocketmq/
目录下面,创建docker-compose.yml文件:(服务编排:nameserver、broker、console)
version: '3.5' # Docker Compose 文件版本,确保兼容性services:# Name Server 服务配置rocketmq_server:image: foxiswho/rocketmq:server # 镜像container_name: rocketmq_server # 容器名称ports:- 9876:9876 # 端口映射volumes:- ~/docker_install/rocketmq/rocketmq_server/logs:/opt/logs # 挂载日志目录到容器内- ~/docker_install/rocketmq/rocketmq_server/store:/opt/store # 挂载数据存储目录到容器内networks:rocketmq:aliases:- rocketmq_server # 在自定义网络中为容器设置别名,方便其他容器通过该别名访问# Broker 服务配置rocketmq_broker:image: foxiswho/rocketmq:broker # 镜像container_name: rocketmq_broker # 定义容器名称ports:- 10909:10909 # 映射Broker HTTP监听端口到主机,通常用于管理接口- 10911:10911 # 映射Broker监听端口到主机,用于客户端连接volumes:- ~/docker_install/rocketmq/rocketmq_broker/logs:/opt/logs # 挂载日志目录到容器内- ~/docker_install/rocketmq/rocketmq_broker/store:/opt/store # 挂载数据存储目录到容器内- ~/docker_install/rocketmq/conf/broker.conf:/etc/rocketmq/broker.conf # 挂载自定义的Broker配置文件到容器内environment:NAMESRV_ADDR: "rocketmq_server:9876" # 设置环境变量,指定NameServer地址JAVA_OPTS: " -Duser.home=/opt" # Java运行参数,设置用户主目录JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m" # 扩展Java运行参数,设置JVM内存选项command: mqbroker -c /etc/rocketmq/broker.conf # 启动命令,使用挂载的配置文件启动Brokerdepends_on:- rocketmq_server # 依赖rocketmq_server服务,先启动NameServer再启动Brokernetworks:rocketmq:aliases:- rocketmq_broker # 在自定义网络中为容器设置别名,方便其他容器通过该别名访问# RocketMQ可视化控制台配置rocketmq_console_ng:image: styletang/rocketmq-console-ng # 镜像container_name: rocketmq_console_ng # 定义容器名称ports:- 9002:8080 # 端口映射environment:JAVA_OPTS: "-Drocketmq.namesrv.addr=rocketmq_server:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" # 设置控制台使用的NameServer地址和其他必要的JVM参数depends_on:- rocketmq_server # 依赖rocketmq_server服务networks:rocketmq:aliases:- rocketmq_console_ng # 在自定义网络中为容器设置别名,方便其他容器通过该别名访问networks:rocketmq: # 自定义网络配置,所有相关服务都连接到这个网络上name: rocketmq # 网络名称driver: bridge # 使用桥接网络驱动,这是默认的网络类型,允许容器之间相互通信
2、使用docker-compose命令启动容器
# 后台启动
docker compose up -d# 查看容器是否启动成功
docker compose ps
3、访问web控制台
访问地址: http://ip:9002