当前位置: 首页 > news >正文

使用 Docker 部署 RabbitMQ 并实现数据持久化

非常好!以下是一份完整的 Docker 部署 RabbitMQ 的博客文档,包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。


使用 Docker 部署 RabbitMQ 并实现数据持久化

RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中。使用 Docker 部署 RabbitMQ 可以快速搭建开发或生产环境,同时通过挂载卷实现数据持久化。本文将详细介绍如何使用 Docker 部署 RabbitMQ,并解决常见问题。


目录

  1. 环境准备
  2. 部署 RabbitMQ
    • 使用 Docker 命令部署
    • 使用 Docker Compose 部署
  3. 创建管理员用户
  4. 验证部署
  5. 数据持久化
  6. 常见问题排查
  7. 总结

环境准备

1. 安装 Docker

确保已安装 Docker。如果未安装,请参考 Docker 官方文档 进行安装。

2. 安装 Docker Compose

确保已安装 Docker Compose。如果未安装,请参考 Docker Compose 官方文档 进行安装。

3. 创建数据目录

在宿主机上创建目录,用于存储 RabbitMQ 的数据和日志:

mkdir -p /home/middleware/rabbitmq/data
mkdir -p /home/middleware/rabbitmq/logs

部署 RabbitMQ

使用 Docker 命令部署

运行以下命令启动 RabbitMQ 容器:

docker run -d \--hostname rabbitmq-node1 \  # 设置 RabbitMQ 节点的主机名--name rabbitmq \            # 容器名称-p 5672:5672 \              # RabbitMQ 的 AMQP 端口-p 15672:15672 \            # RabbitMQ 管理界面端口-v /home/middleware/rabbitmq/data:/var/lib/rabbitmq \  # 挂载数据目录-v /home/middleware/rabbitmq/logs:/var/log/rabbitmq \  # 挂载日志目录rabbitmq:management         # 使用带管理插件的 RabbitMQ 镜像

使用 Docker Compose 部署

创建 docker-compose.yml 文件:

version: '3'
services:rabbitmq:image: rabbitmq:managementcontainer_name: rabbitmqhostname: rabbitmq-node1ports:- "5672:5672"- "15672:15672"volumes:- /home/middleware/rabbitmq/data:/var/lib/rabbitmq- /home/middleware/rabbitmq/logs:/var/log/rabbitmqenvironment:- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=admin123restart: always

运行以下命令启动服务:

docker-compose up -d

创建管理员用户

默认的 guest 用户只能在本地访问。为了安全性和更好的管理,建议创建一个新的管理员用户。

1. 进入 RabbitMQ 容器

docker exec -it rabbitmq bash

2. 创建用户

创建一个用户名为 admin,密码为 admin123 的用户:

rabbitmqctl add_user admin admin123

3. 设置用户标签

为用户分配 administrator 标签,使其具有管理员权限:

rabbitmqctl set_user_tags admin administrator

4. 设置用户权限

为用户设置权限,允许其访问所有虚拟主机(vhost)和资源:

rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

5. 删除默认的 guest 用户(可选)

为了安全性,建议删除默认的 guest 用户:

rabbitmqctl delete_user guest

验证部署

  1. 访问 RabbitMQ 管理界面

    • 打开浏览器,访问 http://<服务器IP>:15672
    • 使用新创建的管理员用户(如 admin)登录。
  2. 检查挂载的目录

    • 查看 /home/middleware/rabbitmq/data,确认消息数据已保存。
    • 查看 /home/middleware/rabbitmq/logs,确认日志文件已保存。
  3. 测试数据持久化

    • 在 RabbitMQ 管理界面中创建队列或发送消息。
    • 停止并删除容器:
      docker stop rabbitmq
      docker rm rabbitmq
      
    • 重新启动容器,检查队列和消息是否仍然存在。

数据持久化

通过挂载宿主机目录到容器中,可以实现 RabbitMQ 数据的持久化:

  • 数据目录/home/middleware/rabbitmq/data 挂载到 /var/lib/rabbitmq,用于存储消息数据。
  • 日志目录/home/middleware/rabbitmq/logs 挂载到 /var/log/rabbitmq,用于存储日志文件。

常见问题排查

1. 无法访问管理界面

  • 检查容器是否运行
    docker ps
    
  • 检查端口映射
    docker port rabbitmq
    
  • 检查防火墙和安全组
    • 确保服务器的防火墙开放了 15672 端口。
    • 如果是云服务器,检查安全组规则。

2. 数据未持久化

  • 检查挂载目录权限
    sudo chmod -R 775 /home/middleware/rabbitmq/data
    sudo chown -R 999:999 /home/middleware/rabbitmq/data
    

3. RabbitMQ 管理插件未启用

  • 进入容器并启用插件
    docker exec -it rabbitmq bash
    rabbitmq-plugins enable rabbitmq_management
    

4. .erlang.cookie 文件权限问题

如果 RabbitMQ 启动失败并提示 .erlang.cookie 文件权限问题,运行以下命令修复:

sudo chmod 600 /home/middleware/rabbitmq/data/.erlang.cookie
sudo chown 999:999 /home/middleware/rabbitmq/data/.erlang.cookie

5. docker-compose 权限问题

如果运行 docker-compose up -d 时提示权限不足,运行以下命令修复:

sudo chmod +x /usr/local/bin/docker-compose

总结

通过 Docker 部署 RabbitMQ 可以快速搭建消息队列服务,同时通过挂载卷实现数据持久化。本文详细介绍了部署步骤、数据持久化方法以及常见问题的排查方法。希望这篇文档能帮助你顺利部署 RabbitMQ!

相关文章:

使用 Docker 部署 RabbitMQ 并实现数据持久化

非常好&#xff01;以下是一份完整的 Docker 部署 RabbitMQ 的博客文档&#xff0c;包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。 使用 Docker 部署 RabbitMQ 并实现数据持久化 RabbitMQ 是一个开源的消息队列系统&#xff0c;广泛应用于分布式系统中。使用…...

Pandas的数据转换函数

Pandas的数据转换函数&#xff1a;map, apply, applymap 参数描述map只用于Series,实现每个值->值的映射apply用于Series实现每个值的处理&#xff0c;用于DataFrame实现某个轴的Series的处理applymap只能用于DataFrame, 用于处理该DataFrame的每个元素 1. map用于Series值…...

影刀 RPA 实战开发阶段总结

目录 1. 影刀 RPA 官方教程的重要性 1.1系统全面的知识体系 1.2 权威准确的技术指导 1.3 贴合实际的案例教学 1.4高效的学习方法引导 2. 官方视频教程与实战 2.1 官方视频教程&#xff1a;奠定坚实基础 2.2 实战&#xff1a;拓展应用视野 3. 往期实战博文导航 3.1 初级…...

Linux系统上安装kafka

目录 1. 安装Java环境 2. 下载和解压Kafka 3. 配置Kafka 4. 启动ZooKeeper和Kafka 5. 测试Kafka 6. 停止服务 7.常见问题 1. 安装Java环境 Kafka依赖Java运行环境&#xff08;JDK 8或更高版本&#xff09;&#xff1a; # 安装OpenJDK&#xff08;推荐&#xff09; yum…...

DeepSeek如何快速开发PDF转Word软件

一、引言 如今&#xff0c;在线工具的普及让PDF转Word成为了一个常见需求&#xff0c;常见的PDF转Word工具有收费的WPS&#xff0c;免费的有PDFGear&#xff0c;以及在线工具SmallPDF、iLovePDF、24PDF等。然而&#xff0c;大多数免费在线转换工具存在严重隐私风险——文件需上…...

虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放

系列文章目录 虚拟机 | Ubuntu 安装流程以及界面太小问题解决 文章目录 系列文章目录虚拟机 | Ubuntu 安装流程以及界面太小问题解决 前言一、VMware Tools 和 open-vm-tools 是什么1、VMware Tools2、open-vm-tools 二、推荐使用open-vm-tools&#xff08;简单&#xff09;1、…...

Mysql-经典故障案例(1)-主从同步由于主键问题引发的故障

故障报错 Could not execute Write_rows event on table test.users; Duplicate entry 3 for key PRIMARY, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the events master log mysql-bin.000031, end_log_pos 3297这是由于从库存在与主库相同主键值&#xff0c;…...

Linux下学【MySQL】中如何实现:多表查询(配sql+实操图+案例巩固 通俗易懂版~)

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章是MySQL篇中&#xff0c;非常实用性的篇章&#xff0c;相信在实际工作中对于表的查询&#xff0c;很多时候会涉及多表的查询&#xff0c;在多表查询…...

ubuntu局域网部署stable-diffusion-webui记录

需要局域网访问&#xff0c;如下设置&#xff1a; 过程记录查看源码&#xff1a; 查看源码&#xff0c;原来修改参数&#xff1a;--server-name 故启动&#xff1a; ./webui.sh --server-name0.0.0.0 安装下载记录&#xff1a; 快速下载可设置&#xff1a; export HF_ENDPOI…...

最基于底层的运算符——位运算符

位运算符是直接对二进制位&#xff08;bit&#xff09;进行操作的运算符&#xff0c;它们在底层开发、算法优化和特定场景&#xff08;如位掩码、数据压缩&#xff09;中非常高效。以下是常见位运算符的详解、使用技巧及注意事项&#xff1a; 一、六大核心位运算符 1. 按位与&…...

代码随想录算法训练营第三十二天 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

509. 斐波那契数 力扣题目链接(opens new window) 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n -…...

3-9 WPS JS宏单元格复制、重定位应用(拆分单表到多表)

************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...

C++ 中前置 `++` 与后置 `++` 运算符重载

C 中前置 与后置 运算符重载的设计原理与使用规范 1. 为什么后置 返回对象而不是引用&#xff1f; 原因&#xff1a; 后置 需要返回自增前的旧值&#xff0c;但旧值在运算后已被修改。为了保存旧值&#xff0c;必须在函数内部创建一个临时对象&#xff08;拷贝原对象的状态…...

Scala:case class(通俗易懂版)

1. case class 是什么&#xff1f; 想象你要做一个表格&#xff0c;比如学生信息表&#xff0c;每一行需要填&#xff1a;姓名、年龄、成绩。 在代码里&#xff0c;这种“表格的一行”就是一个数据对象&#xff0c;case class 就是帮你快速创建这种“表格行”的工具。 普通方…...

Vue、React、原生小程序的写法对比差异

以下是从 变量、方法、路由、状态管理、父子传值 等多个维度对 Vue、React、原生小程序 的对比表格: 技术对比表格 功能/技术Vue (Options/Composition API)React (Hooks)原生微信小程序变量定义data() { return { count: 0 } }(Options API)const count = ref(0)(Composition…...

【AIGC系列】6:HunyuanVideo视频生成模型部署和代码分析

AIGC系列博文&#xff1a; 【AIGC系列】1&#xff1a;自编码器&#xff08;AutoEncoder, AE&#xff09; 【AIGC系列】2&#xff1a;DALLE 2模型介绍&#xff08;内含扩散模型介绍&#xff09; 【AIGC系列】3&#xff1a;Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…...

java 初学知识点总结

自己总结着玩 1.基本框架 public class HelloWorld{ public static void main(String[] args){ }//类名用大写字母开头 } 2.输入&#xff1a; (1)Scanner:可读取各种类型&#xff0c;字符串相当于cin>>; Scanner anew Scanner(System.in); Scan…...

Android MVC、MVP、MVVM三种架构的介绍和使用。

写在前面&#xff1a;现在随便出去面试Android APP相关的工作&#xff0c;面试官基本上都会提问APP架构相关的问题&#xff0c;用Java、kotlin写APP的话&#xff0c;其实就三种架构MVC、MVP、MVVM&#xff0c;MVC和MVP高度相似&#xff0c;区别不大&#xff0c;MVVM则不同&…...

AI视频领域的DeepSeek—阿里万相2.1图生视频

让我们一同深入探索万相 2.1 &#xff0c;本文不仅介绍其文生图和文生视频的使用秘籍&#xff0c;还将手把手教你如何利用它实现图生视频。 如下为生成的视频效果&#xff08;我录制的GIF动图&#xff09; 如下为输入的图片 目录 1.阿里巴巴全面开源旗下视频生成模型万相2.1模…...

IDEA 2024.1.7 Java EE 无框架配置servlet

1、创建一个目录&#xff08;文件夹&#xff09;lib来放置我们的库 2、将tomcat目录下的lib文件夹中的servlet-api.jar文件复制到刚创建的lib文件夹下。 3、把刚才复制到lib下的servlet-api.jar添加为库 4、在src下新建一个package&#xff1a;com.demo&#xff0c;然后创…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...