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