🛠️ RabbitMQ Docker 一键部署脚本

此脚本用于在 Linux 环境下快速部署带有管理界面的 RabbitMQ。它会自动处理数据目录创建、旧容器清理以及端口映射配置。

脚本功能
  • 自动环境准备:检查并创建持久化数据目录。
  • 智能更新:如果存在同名容器,自动停止并删除旧实例,实现“重启即更新”。
  • 开箱即用:预设了默认管理员账号和密码,无需手动进入容器配置。
使用方法
  1. 在服务器创建一个文件 install_rabbitmq.sh
  2. 将下方代码粘贴进去。
  3. 赋予执行权限并运行:
    chmod +x install_rabbitmq.sh
    ./install_rabbitmq.sh
    
脚本内容
#!/bin/bash

# ==========================================
#  RabbitMQ Docker 自动化部署脚本
#  适用于 CentOS/Ubuntu/Debian 等系统
# ==========================================

# --- ⚙️ 配置区域 (可根据需要修改) ---
CONTAINER_NAME="rabbitmq"       # 容器名称
IMAGE_NAME="rabbitmq:3-management" # 镜像版本 (带 management 插件)
HOST_PORT_APP=5672              # AMQP 协议端口
HOST_PORT_WEB=15672             # Web 管理界面端口
DATA_DIR="./rabbitmq_data"      # 本地数据挂载目录
DEFAULT_USER="admin"            # 默认管理员账号
DEFAULT_PASS="123456"           # 默认管理员密码 (生产环境请修改!)

# --- 🎨 颜色定义 (美化输出) ---
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}>>> 正在初始化 RabbitMQ 部署流程...${NC}"

# 1. 检查并创建数据目录
if [ ! -d "$DATA_DIR" ]; then
    echo -e "${YELLOW}[INFO] 数据目录不存在,正在创建: $DATA_DIR${NC}"
    mkdir -p "$DATA_DIR"
    # 赋予权限以避免容器启动时的权限错误
    chmod -R 777 "$DATA_DIR"
fi

# 2. 检查旧容器是否存在
# 如果存在同名容器,则视为更新操作,先停止并删除
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
    echo -e "${YELLOW}[WARN] 检测到同名容器 '$CONTAINER_NAME' 已存在。${NC}"
    echo -e "${YELLOW}       正在停止并移除旧容器...${NC}"
    docker stop $CONTAINER_NAME > /dev/null 2>&1
    docker rm $CONTAINER_NAME > /dev/null 2>&1
    echo -e "${GREEN}[OK] 旧容器已清理完毕。${NC}"
fi

# 3. 执行启动命令
echo -e "${BLUE}>>> 正在拉取镜像并启动容器...${NC}"

docker run -d \
  --name $CONTAINER_NAME \
  -p $HOST_PORT_APP:$HOST_PORT_APP \
  -p $HOST_PORT_WEB:$HOST_PORT_WEB \
  -v $DATA_DIR:/var/lib/rabbitmq \
  -e RABBITMQ_DEFAULT_USER=$DEFAULT_USER \
  -e RABBITMQ_DEFAULT_PASS=$DEFAULT_PASS \
  $IMAGE_NAME

# 4. 检查结果反馈
if [ $? -eq 0 ]; then
    echo ""
    echo -e "${GREEN}=========================================${NC}"
    echo -e "${GREEN}🚀 RabbitMQ 部署成功!${NC}"
    echo -e "${GREEN}=========================================${NC}"
    echo -e "🌐 管理后台地址: http://<你的服务器IP>:$HOST_PORT_WEB"
    echo -e "🔑 登录账号: $DEFAULT_USER"
    echo -e "🔒 登录密码: $DEFAULT_PASS"
    echo ""
else
    echo ""
    echo -e "${RED}❌ 部署失败!请检查 Docker 服务状态或端口是否被占用。${NC}"
fi

💡 注意事项
  • 防火墙设置:如果你的服务器开启了防火墙(如 firewalld 或云服务商的安全组),请务必放行 15672 (Web界面) 和 5672 (客户端连接) 端口。
  • 数据安全:脚本中使用了 chmod 777 来确保数据目录权限,这在开发环境中很方便,但在高安全要求的生产环境中,建议根据具体的 UID/GID 进行更严格的权限控制。
  • 持久化:数据会保存在脚本所在目录下的 rabbitmq_data 文件夹中,即使删除容器,数据也不会丢失。

更多推荐