欢迎光临易鼎网
详情描述

1. 快速安装RocketMQ 5.x

方法一:使用官方镜像(推荐)

# 创建网络(如果还没创建)
docker network create rocketmq-network

# 启动NameServer
docker run -d \
  --name rmqnamesrv \
  --net rocketmq-network \
  -p 9876:9876 \
  -v /data/rocketmq/namesrv/logs:/root/logs \
  -v /data/rocketmq/namesrv/store:/root/store \
  -e "MAX_POSSIBLE_HEAP=256m" \
  apacherocketmq/rocketmq:5.1.4 \
  sh mqnamesrv

# 启动Broker
docker run -d \
  --name rmqbroker \
  --net rocketmq-network \
  -p 10911:10911 \
  -p 10909:10909 \
  -v /data/rocketmq/broker/logs:/root/logs \
  -v /data/rocketmq/broker/store:/root/store \
  -v /data/rocketmq/broker/conf:/home/rocketmq/rocketmq-5.1.4/conf \
  -e "NAMESRV_ADDR=rmqnamesrv:9876" \
  -e "MAX_POSSIBLE_HEAP=512m" \
  -e "JAVA_OPTS=-Duser.home=/home/rocketmq" \
  apacherocketmq/rocketmq:5.1.4 \
  sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf

方法二:使用Docker Compose(更简洁)

创建 docker-compose.yml 文件:

version: '3.8'

services:
  namesrv:
    image: apacherocketmq/rocketmq:5.1.4
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - ./data/namesrv/logs:/root/logs
      - ./data/namesrv/store:/root/store
    environment:
      - MAX_POSSIBLE_HEAP=256m
    command: sh mqnamesrv
    networks:
      - rocketmq-net

  broker:
    image: apacherocketmq/rocketmq:5.1.4
    container_name: rmqbroker
    ports:
      - 10911:10911
      - 10909:10909
    volumes:
      - ./data/broker/logs:/root/logs
      - ./data/broker/store:/root/store
      - ./broker.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf
    environment:
      - NAMESRV_ADDR=namesrv:9876
      - MAX_POSSIBLE_HEAP=512m
      - JAVA_OPTS=-Duser.home=/home/rocketmq
    command: sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf
    depends_on:
      - namesrv
    networks:
      - rocketmq-net

  proxy:
    image: apacherocketmq/rocketmq:5.1.4
    container_name: rmqproxy
    ports:
      - 8081:8081
    environment:
      - NAMESRV_ADDR=namesrv:9876
    depends_on:
      - namesrv
      - broker
    command: sh mqproxy
    networks:
      - rocketmq-net

networks:
  rocketmq-net:
    driver: bridge

创建Broker配置文件 broker.conf

# Broker配置
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

# Broker监听地址(重要:需要配置为容器对外IP或0.0.0.0)
listenPort=10911
brokerIP1=你的宿主机IP  # 或者 0.0.0.0
brokerIP2=你的宿主机IP  # 或者 0.0.0.0

# 存储路径
storePathRootDir=/home/rocketmq/store
storePathCommitLog=/home/rocketmq/store/commitlog
storePathConsumeQueue=/home/rocketmq/store/consumequeue
storePathIndex=/home/rocketmq/store/index
storeCheckpoint=/home/rocketmq/store/checkpoint
abortFile=/home/rocketmq/store/abort

运行:

# 启动所有服务
docker-compose up -d

# 查看状态
docker-compose ps

2. 安装Dashboard(管理控制台)

# 下载最新版Dashboard
docker pull apacherocketmq/rocketmq-dashboard:latest

# 运行Dashboard
docker run -d \
  --name rocketmq-dashboard \
  --net rocketmq-network \
  -p 8080:8080 \
  -e "JAVA_OPTS=-Xmx256m -Xms256m" \
  -e "ROCKETMQ_CONFIG_NAMESRVADDR=rmqnamesrv:9876" \
  apacherocketmq/rocketmq-dashboard:latest

3. 完整集群部署(1主2从)

创建 docker-compose-cluster.yml

version: '3.8'

services:
  namesrv1:
    image: apacherocketmq/rocketmq:5.1.4
    container_name: rmqnamesrv1
    ports:
      - 9876:9876
    command: sh mqnamesrv
    networks:
      - rmq-cluster

  broker-master:
    image: apacherocketmq/rocketmq:5.1.4
    container_name: rmqbroker-master
    ports:
      - 10911:10911
    volumes:
      - ./conf/broker-master.conf:/opt/rocketmq/conf/broker.conf
    environment:
      - NAMESRV_ADDR=namesrv1:9876
    command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
    depends_on:
      - namesrv1
    networks:
      - rmq-cluster

  broker-slave1:
    image: apacherocketmq/rocketmq:5.1.4
    container_name: rmqbroker-slave1
    ports:
      - 10912:10911
    volumes:
      - ./conf/broker-slave1.conf:/opt/rocketmq/conf/broker.conf
    environment:
      - NAMESRV_ADDR=namesrv1:9876
    command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
    depends_on:
      - namesrv1
    networks:
      - rmq-cluster

  proxy:
    image: apacherocketmq/rocketmq:5.1.4
    container_name: rmqproxy
    ports:
      - 8081:8081
    environment:
      - NAMESRV_ADDR=namesrv1:9876
    command: sh mqproxy
    depends_on:
      - broker-master
      - broker-slave1
    networks:
      - rmq-cluster

networks:
  rmq-cluster:
    driver: bridge

4. 验证安装

# 检查容器运行状态
docker ps

# 查看NameServer日志
docker logs rmqnamesrv

# 查看Broker日志
docker logs rmqbroker

# 进入容器测试
docker exec -it rmqbroker bash

# 在容器内创建Topic
sh mqadmin updateTopic -n namesrv:9876 -t TestTopic -c DefaultCluster

5. 常用命令

# 停止服务
docker stop rmqbroker rmqnamesrv

# 删除容器
docker rm rmqbroker rmqnamesrv

# 查看磁盘使用情况
docker exec rmqbroker sh mqadmin statsAll -n namesrv:9876

# 检查集群状态
docker exec rmqbroker sh mqadmin clusterList -n namesrv:9876

注意事项

版本选择:建议使用最新稳定版,如 5.1.4 网络配置:确保容器间网络互通 存储持久化:重要数据要挂载宿主机目录 内存配置:根据实际需求调整JVM内存参数 生产环境:建议使用完整的集群部署方案

这样你就可以在Docker中成功运行RocketMQ 5.x了。Proxy模式是5.x的新特性,提供了更灵活的消息路由能力。