docker-compose启动Rocket MQ及其GUI

发布于:2025-08-07 ⋅ 阅读:(22) ⋅ 点赞:(0)

1、创建脚本文件setup-rocketmq.sh

#!/bin/bash

# =================================================================
# RocketMQ Docker-Compose 部署脚本
# 功能:
#   1. 交互式获取服务器IP地址
#   2. 创建部署目录和配置文件
#   3. 生成 docker-compose.yml 和 broker.conf
# 作者: Your AI Assistant
# =================================================================

# 定义颜色常量,用于美化输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# --- 1. 获取用户输入:服务器IP地址 ---
read -p "$(echo -e ${YELLOW}"请输入您的Linux服务器IP地址 [默认: 192.168.213.8]: "${NC})" SERVER_IP
# 如果用户未输入任何内容,则使用默认值
SERVER_IP=${SERVER_IP:-"192.168.213.8"}

echo -e "${GREEN}好的,将使用IP地址: ${SERVER_IP}${NC}"
echo ""

# --- 2. 定义并创建部署目录 ---
DEPLOY_DIR="rocketmq-docker-deployment"

if [ -d "$DEPLOY_DIR" ]; then
    echo -e "${RED}错误: 目录 '$DEPLOY_DIR' 已存在。请先删除或重命名该目录,然后再运行脚本。${NC}"
    exit 1
fi

echo "--> 正在创建部署目录: $DEPLOY_DIR"
mkdir -p "${DEPLOY_DIR}/conf"
mkdir -p "${DEPLOY_DIR}/data/namesrv/logs"
mkdir -p "${DEPLOY_DIR}/data/broker/logs"
mkdir -p "${DEPLOY_DIR}/data/broker/store"
echo ""

# --- 3. 生成 docker-compose.yml 文件 ---
echo "--> 正在生成 docker-compose.yml 文件..."

cat <<EOF > "${DEPLOY_DIR}/docker-compose.yml"
version: '3.8'

services:
  # NameServer服务
  rmqnamesrv:
    image: apache/rocketmq:5.1.4
    container_name: rmqnamesrv
    ports:
      - "9876:9876"
    volumes:
      - ./data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv
    networks:
      - rmq-network

  # Broker服务
  rmqbroker:
    image: apache/rocketmq:5.1.4
    container_name: rmqbroker
    ports:
      - "10911:10911"
      - "10909:10909"
    volumes:
      - ./data/broker/logs:/home/rocketmq/logs
      - ./data/broker/store:/home/rocketmq/store
      - ./conf/broker.conf:/opt/rocketmq/conf/broker.conf
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
    depends_on:
      - rmqnamesrv
    networks:
      - rmq-network

  # Dashboard控制台
  rmqdashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rmqdashboard
    ports:
      - "8088:8080"
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    depends_on:
      - rmqnamesrv
    networks:
      - rmq-network

networks:
  rmq-network:
    driver: bridge
EOF

echo -e "${GREEN}docker-compose.yml 创建成功!${NC}"
echo ""

# --- 4. 生成 conf/broker.conf 文件 ---
echo "--> 正在生成 conf/broker.conf 文件..."
cat <<EOF > "${DEPLOY_DIR}/conf/broker.conf"
# 集群名称
brokerClusterName = DefaultCluster

# Broker名称
brokerName = broker-a
brokerId = 0

# 【关键】Broker对外服务的IP地址
# 此处已由脚本自动替换
brokerIP1 = ${SERVER_IP}

# 刷盘方式: 异步刷盘
flushDiskType = ASYNC_FLUSH
# Broker角色: 异步复制主节点
brokerRole = ASYNC_MASTER

# 允许自动创建Topic
autoCreateTopicEnable=true
EOF

echo -e "${GREEN}conf/broker.conf 创建成功!${NC}"
echo ""
echo "---------------------------------------------------------"
echo ""

# --- 5. 输出最终提示信息 ---
echo -e "${GREEN}🚀 所有文件已成功生成!${NC}"
echo ""
echo -e "${YELLOW}接下来的操作步骤:${NC}"
echo -e "1. 进入部署目录:"
echo -e "   ${GREEN}cd ${DEPLOY_DIR}${NC}"
echo ""
echo -e "2. 启动RocketMQ服务:"
echo -e "   ${GREEN}docker-compose up -d${NC}"
echo ""
echo -e "3. 验证服务状态:"
echo -e "   ${GREEN}docker-compose ps${NC}"
echo ""
echo -e "4. 访问Dashboard控制台:"
echo -e "   在浏览器中打开: ${GREEN}http://${SERVER_IP}:8088${NC}"
echo ""
echo -e "5. 客户端连接NameServer地址:"
echo -e "   ${GREEN}${SERVER_IP}:9876${NC}"
echo ""

2、设置脚本文件为可执行权限

chmod +x setup-rocketmq.sh

3、执行脚本

./setup-rocketmq.sh

4、切换目录,执行yml文件

cd rocketmq-docker-deployment
docker compose up -d

5、查看是否启动成功

docker compose ps

网站公告

今日签到

点亮在社区的每一天
去签到