docker挂载rocketmq(5.0)

docker-compose

version: '3.8'

services:
  # NameServer 服务
  namesrv:
    image: docker.1ms.run/apache/rocketmq:5.1.4
    container_name: rocketmq-namesrv
    ports:
      - "9876:9876"
    environment:
      - JAVA_OPT_EXT=-Xms512m -Xmx512m
    command: sh mqnamesrv
    volumes:
      - ./data/namesrv/logs:/home/rocketmq/logs
    networks:
      - rocketmq-network
    restart: unless-stopped

  # Broker 服务
  broker:
    image: docker.1ms.run/apache/rocketmq:5.1.4
    container_name: rocketmq-broker
    ports:
      - "10909:10909"
      - "10911:10911"
      - "10912:10912"
    environment:
      - NAMESRV_ADDR=namesrv:9876
      - JAVA_OPT_EXT=-Xms1g -Xmx1g
    command: sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf
    volumes:
      - ./data/broker/logs:/home/rocketmq/logs
      - ./data/broker/store:/home/rocketmq/store
      - ./conf/broker.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf
      - ./conf/plain_acl.yml:/home/rocketmq/rocketmq-5.1.4/conf/plain_acl.yml
    depends_on:
      - namesrv
    networks:
      - rocketmq-network
    restart: unless-stopped

  # RocketMQ 控制台
  console:
    image: docker.1ms.run/apacherocketmq/rocketmq-dashboard:latest
    container_name: rocketmq-console
    ports:
      - "8080:8082"
    environment:
      - JAVA_OPTS=-Xmx256m -Xms256m
      - rocketmq.config.namesrvAddr=namesrv:9876
      # Dashboard 登录认证配置
      - rocketmq.config.loginRequired=true
      # 管理员账号密码(请修改为更安全的密码)
      - rocketmq.config.dataPath=/tmp/rocketmq-console/data
      # ACL 配置(Broker 启用了 ACL)
      - rocketmq.config.accessKey=RocketMQ_Admin
      - rocketmq.config.secretKey=AdminPass123456
    volumes:
      - ./conf/users.properties:/tmp/rocketmq-console/data/users.properties
    depends_on:
      - namesrv
    networks:
      - rocketmq-network
    restart: unless-stopped

networks:
  rocketmq-network:
    driver: bridge

broker.conf

# Broker 配置文件

# Broker 集群名称
brokerClusterName = DefaultCluster

# Broker 名称
brokerName = broker-a

# Broker ID, 0 表示 Master,大于 0 表示 Slave
brokerId = 0

# NameServer 地址
namesrvAddr = namesrv:9876

# 删除文件时间点,默认凌晨 4 点
deleteWhen = 04

# 文件保留时间,默认 48 小时
fileReservedTime = 48

# Broker 的角色
# - ASYNC_MASTER 异步复制 Master
# - SYNC_MASTER 同步双写 Master
# - SLAVE
brokerRole = ASYNC_MASTER

# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH

# Broker 对外服务的监听端口
listenPort = 10911

# 在发送消息时,自动创建服务器不存在的 topic,默认创建的队列数
defaultTopicQueueNums = 4

# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭
autoCreateTopicEnable = true

# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup = true

# Broker 对外暴露的 IP 地址(重要:改为你的宿主机 IP 或使用 docker 网络)
brokerIP1 = 192.168.31.51

# 存储路径
# storePathRootDir = /home/rocketmq/store
# storePathCommitLog = /home/rocketmq/store/commitlog

# ACL 访问控制配置
# 启用 ACL
aclEnable = true

plain_acl.yml

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# 全局白名单配置(可选)
# 注意:RocketMQ 不支持 CIDR 格式,使用通配符格式
globalWhiteRemoteAddresses:
  - 10.10.103.*
  - 192.168.*.*

# ACL 账号配置
accounts:
  # 管理员账号
  - accessKey: RocketMQ_Admin
    secretKey: AdminPass123456
    whiteRemoteAddress: 
    admin: true
    defaultTopicPerm: DENY
    defaultGroupPerm: DENY
    topicPerms:
    groupPerms:

  # 生产者账号
  - accessKey: RocketMQ_Producer  
    secretKey: ProducerPass123456
    whiteRemoteAddress:
    admin: false
    defaultTopicPerm: PUB
    defaultGroupPerm: SUB
    topicPerms:
    groupPerms:

  # 消费者账号
  - accessKey: RocketMQ_Consumer
    secretKey: ConsumerPass123456
    whiteRemoteAddress:
    admin: false
    defaultTopicPerm: SUB
    defaultGroupPerm: SUB
    topicPerms:
    groupPerms:

users.properties

# RocketMQ Dashboard 用户配置文件
# 格式: username=password,role

# 管理员账号
admin=admin123,1

# 普通用户账号
user=user123,2

# 角色说明:
# 1 = ADMIN (管理员,拥有所有权限)
# 2 = ORDINARY (普通用户,只读权限)

### 使用 Docker 部署 RocketMQ 5.0 的方法 为了通过 Docker 正确部署 RocketMQ 5.0,需要按照以下方式构建并配置各个组件的服务容器。以下是详细的说明: #### 1. 准备前置文件 在开始之前,需准备好 `namesrv` 和 `broker` 的 Dockerfile 文件以及 Dashboard 的相关依赖项。这些文件可以从官方 GitHub 库下载[^1]。 ```bash git clone https://github.com/apache/rocketmq-dashboard.git cd rocketmq-dashboard/ ``` 确保本地已安装 Git 工具以便克隆仓库中的必要文件。 #### 2. 构建 Nameserver 容器 Nameserver 是 RocketMQ 中的核心元数据管理节点之一。可以通过如下命令来启动 Nameserver 容器: ```docker docker run -d \ --name rocketmq-namesrv \ -p 9876:9876 \ -v $(pwd)/data/namesrv/logs:/root/logs \ apache/rocketmq:5.0 namesrv ``` 此命令会拉取 Apache 官方镜像,并指定端口映射为默认的 9876 端口用于外部访问[^4]。 #### 3. 启动 Broker 节点 Broker 主要负责消息的实际存储工作,在分布式环境中通常会有多个实例组成集群形式运作。下面是一个简单的单机版 Broker 初始化例子: ```docker docker run -d \ -e NAMESRV_ADDR="localhost:9876" \ --name rocketmq-broker \ -p 10911:10911 \ -p 10909:10909 \ -v $(pwd)/data/broker/logs:/root/logs \ -v $(pwd)/data/broker/store:/root/store \ apache/rocketmq:5.0 broker -n localhost:9876 ``` 这里设置了两个重要参数 `-e NAMESRV_ADDR` 来告知 Broker 找到对应的 Nameserver 地址;另外还定义了一些持久化路径供日志记录和数据保存之用。 #### 4. 创建 Dashboard 控制面板 Dashboard 提供了一个图形化的界面让用户更方便地监控整个系统的健康状况及性能指标等信息。基于前面提到的内容,可采用如下脚本来完成其初始化过程[^3]: ```sh cat <<EOF >/app/rocketmq/dashboard/start-dashboard.sh #!/bin/bash docker run -d \ -p 8080:8080 \ --name rocketmq-console-ng \ --restart=always \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=${NAMESRV_ADDR} -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ styletang/rocketmq-console-ng EOF chmod +x /app/rocketmq/dashboard/start-dashboard.sh ./start-dashboard.sh ``` 上述脚本允许自定义传入变量 `${NAMESRV_ADDR}` 表示实际使用的 Nameserver IP 列表字符串(以分号隔开)。完成后执行该脚本即可成功开启 Web UI 功能,默认监听于主机上的 8080 端口号处等待连接请求到来。 #### 5. 测试与验证 当以上各部分都顺利搭建完毕之后,就可以尝试发送测试消息至目标 Topic 上面去检验整体链路是否通畅无误了。具体操作流程不再赘述,请参照官方文档进一步学习实践。 --- ### 注意事项 - 如果是在生产环境下运行,则建议调整更多高级选项如设置密码保护机制、启用 SSL 加密传输等功能增强安全性。 - 对于大规模应用场景来说,推荐使用 Kubernetes 结合 RocketMQ Operator 自动化运维工具来进行统一管理和调度[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值