使用 Docker 部署 RabbitMQ 并实现数据持久化
非常好!以下是一份完整的 Docker 部署 RabbitMQ 的博客文档,包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。
使用 Docker 部署 RabbitMQ 并实现数据持久化
RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中。使用 Docker 部署 RabbitMQ 可以快速搭建开发或生产环境,同时通过挂载卷实现数据持久化。本文将详细介绍如何使用 Docker 部署 RabbitMQ,并解决常见问题。
目录
- 环境准备
- 部署 RabbitMQ
- 使用 Docker 命令部署
- 使用 Docker Compose 部署
- 创建管理员用户
- 验证部署
- 数据持久化
- 常见问题排查
- 总结
环境准备
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
验证部署
-
访问 RabbitMQ 管理界面:
- 打开浏览器,访问
http://<服务器IP>:15672
。 - 使用新创建的管理员用户(如
admin
)登录。
- 打开浏览器,访问
-
检查挂载的目录:
- 查看
/home/middleware/rabbitmq/data
,确认消息数据已保存。 - 查看
/home/middleware/rabbitmq/logs
,确认日志文件已保存。
- 查看
-
测试数据持久化:
- 在 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 并实现数据持久化
非常好!以下是一份完整的 Docker 部署 RabbitMQ 的博客文档,包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。 使用 Docker 部署 RabbitMQ 并实现数据持久化 RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中。使用…...
VsCode 快捷键备忘
移动光标及选择文本 Ctrl ← / → :以单词为单位移动游标Home / End:光标移到行首/行位Ctrl Home / End:光标移到文件首和文件尾Ctrl Shift \:在匹配的分隔符之间跳转 配对的分隔符 是指分隔代码元素的字符,比如字…...
蓝桥杯备考:动态规划路径类DP之矩阵的最小路径和
如题,要求左上角到右下角的最短路径,我们还是老样子按顺序做 step1:确定状态表示 f[i][j]表示(1,1)到(i,j)的最短距离 step2 :推导状态表达方程 step3:确定填表顺序,应该是从上到下,从左到右 step4:初始化 step5 找结果&#…...
大模型工程师学习日记(十五):Hugging Face 模型微调训练(基于 BERT 的中文评价情感分析)
1. datasets 库核心方法 1.1. 列出数据集 使用 d atasets 库,你可以轻松列出所有 Hugging Face 平台上的数据集: from datasets import list_datasets# 列出所有数据集 all_datasets list_datasets()print(all_datasets)1.2. 加载数据集 你可以通过 l…...
Spring Boot 异步编程
文章目录 一、异步方法的使用1. 开启异步支持2. 定义异步方法3. 调用异步方法踩坑记录心得体会 二、线程池配置1. 自定义线程池2. 使用自定义线程池踩坑记录心得体会 三、异步任务的监控与管理1. 日志记录2. 异常处理3. 线程池监控踩坑记录心得体会 在现代应用程序开发中&#…...
golang并发编程如何学习
《掌握 Golang 并发编程的通关秘籍》 在当今的编程世界中,Golang 并发编程正以其独特的魅力和强大的能力吸引着众多开发者。然而,对于许多小伙伴来说,如何学好这门技术却成了一个头疼的问题。别担心,今天就让我来为大家揭开 Gola…...
Django 中,Form 和 ModelForm的用法和区别
在 Django 中,Form 和 ModelForm 是用于处理表单数据的两种主要方式。它们的主要区别在于是否与模型(Model)直接关联。以下是它们的用法、区别以及高级用法的详细说明: 一、Form 的使用 1. 基本用法 Form 是一个独立的表单类,不与任何模型直接关联。适用于需要手动定义字…...
SQL_语法
1 数据库 1.1 新增 create database [if not exists] 数据库名; 1.2 删除 drop database [if exists] 数据库名; 1.3 查询 (1) 查看所有数据库 show databases; (2) 查看当前数据库下的所有表 show tables; 2 数据表 2.1 新增 (1) 创建表 create table [if not exists…...
Linux网络编程
网络:不同主机,进程间通信 目的 1, 解决主机之间的硬件层面的互联互通 2,解决主机间软件层面的互联互通 IP地址:区分不同主机(软件地址) MAC地址:硬件地址 端口号:区分同…...
算法·搜索
搜索问题 搜索问题本质也是暴力枚举,一般想到暴力也要想到利用回溯枚举。 排序和组合问题 回溯法 去重问题:定义全局变量visited还是局部变量visited实现去重? 回溯问题 图论中的搜索问题 与一般的搜索问题一致,只不过要多…...
前端跨域设置 withCredentials: true
在做登录认证的时候,会出现请求未登录的情况,查看请求头的时候发现并没有把登录时的cookie设置到第二次的请求头里面。查看资料才知道跨域请求要想带上cookie,必须要在ajax请求里加上 withCredentials: true 再次访问发现请求头可以携带cook…...
使用 Arduino 和 Wi-Fi 控制 RGB LED
通过 WiFi 的 Arduino RGb LED 控制器 ,在本文中,我们将介绍下一个基于 IOT 的项目 - 使用 Wi-Fi 的 RGB LED 闪光灯。在这里,我们使用 Arduino 和 ESP8266 Wi-Fi 模块通过 Android 手机通过 Wi-Fi 控制 RGB LED 的颜色。 在这个 RGB Flash…...
html+js 轮播图
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图示例</title><style>/* 基本样式…...
蓝桥杯 Excel地址
Excel地址 题目描述 Excel 单元格的地址表示很有趣,它使用字母来表示列号。 比如, A 表示第 1 列, B 表示第 2 列, Z 表示第 26 列, AA 表示第 27 列, AB 表示第 28 列, BA 表示第 53 列&#x…...
相机几何与标定:从三维世界到二维图像的映射
本系列课程将带领读者开启一场独特的三维视觉工程之旅。我们不再止步于教科书式的公式推导,而是聚焦于如何将抽象的数学原理转化为可落地的工程实践。通过解剖相机的光学特性、构建成像数学模型、解析坐标系转换链条,直至亲手实现参数标定代码࿰…...
SCI期刊推荐 | 免版面费 | 计算机领域:信息系统、软件工程、自动化和控制
在学术研究领域,选择合适的SCI期刊对科研成果的传播与认可至关重要。了解SCI期刊的研究领域和方向是基础,确保投稿内容与期刊主题相符。同时,要关注期刊的影响因子和评估标准,选择具有较高影响力和学术认可度的期刊。阅读期刊的投…...
Cryptography 与 PyCryptodome 源码级解析
目录 Cryptography 与 PyCryptodome 源码级解析一、引言二、Cryptography 库源码解析2.1 Cryptography 库概述与设计理念2.2 核心模块与数据流分析2.2.1 目录结构与模块划分2.2.2 以 AES-GCM 模式为例的加解密实现2.2.3 源码示例解析 2.3 错误处理与边界检测 三、PyCryptodome …...
std::string的模拟实现
目录 string的构造函数 无参数的构造函数 根据字符串初始化 用n个ch字符初始化 用一个字符串的前n个初始化 拷贝构造 用另一个string对象的pos位置向后len的长度初始化 [ ]解引用重载 迭代器的实现 非const版本 const版本 扩容reserve和resize reserve resize p…...
GPU、NPU与LPU:大语言模型(LLM)硬件加速器全面对比分析
引言:大语言模型计算基础设施的演进 随着大语言模型(LLM)的快速发展与广泛应用,高性能计算硬件已成为支撑LLM训练与推理的关键基础设施。目前市场上主要有三类处理器用于加速LLM相关任务:GPU(图形处理单元…...
常见限流算法
限流是指在高并发、大流量请求的情况下,限制新的流量对系统的访问,以保证系统服务的安全性。常见的限流算法及其详细介绍如下: 计数器算法(Fixed Window Counter) 原理:使用一个固定时间窗口内的计数器来…...
美国国家航空航天局(NASA)的PUNCH任务
地球浸没在来自太阳的物质流中。这种被称为太阳风的流正在冲刷我们的星球,造成令人叹为观止的极光,影响太空中的卫星和宇航员,甚至影响地面基础设施。 美国宇航局 (NASA) 的 PUNCH(统一日冕和日球层旋光仪 Polarimeter to Unify the Corona and Heliosphere)任务将首次…...
REST API前端请求和后端接收
1、get请求,带"?" http://localhost:8080/api/aop/getResult?param123 GetMapping("getResult")public ResponseEntity<String> getResult(RequestParam("param") String param){return new ResponseEntity<>("12…...
OpenBMC:BmcWeb构造connect对象
OpenBMC:BmcWeb server.run-CSDN博客 server在接收了tcp连接请求后,会构造一个ConnectionType对象,然后通过post调度,运行该对象的start函数 1.ConnectionType类型 其实也就是using ConnectionType = Connection<Adaptor, Handler>;类型 由于ConnectionType实例化于…...
ESLint 深度解析:原理、规则与插件开发实践
在前端开发的复杂生态中,保障代码质量与规范性是构建稳健、可维护项目的基石。ESLint 作为一款强大的代码检查工具,其默认规则与插件能满足多数常见需求,但面对特定团队规范或项目独特要求,自定义 ESLint 插件便成为有力的扩展手段…...
ios使用swift调用deepseek或SiliconFlow接口
调用SiliconFlow API 注册并获取API密钥:打开硅基流动平台官网Models,进行注册和认证。登录后,进入首页,点击左上角三个横杠,选择API密钥,生成密钥并复制。配置第三方应用:打开安装好的Chatbox…...
贪心算法一
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…...
Java进阶:Dubbo
分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演进过程,下面我们分别了解一下这几个架构。 1.1 单体架构 架构说明: 全部功能集中在一个项目内(All in one…...
【Day9】make/makeFile如何让项目构建自动化起飞
【Day9】make/makeFile如何让项目构建自动化起飞 使用make命令编写makefile文件依赖管理增量构建makefile注释:#makefile其他语法 make/makefile递归式工作过程 在Linux中,项目自动化构建是指使用一系列工具和脚本来自动执行软件项目的编译、测试、打包和…...
SCI1区TOP:自适应学习粒子群算法SLPSO,深度解析+性能实测
目录 1.摘要2.改进策略3.自适应学习粒子群算法4.结果展示5.参考文献6.获取代码 1.摘要 粒子群算法(PSO)是一种基于种群的随机搜索方法,广泛应用于科学和工程领域的连续空间优化问题,并已证明其高效性和有效性。许多实际问题的往往…...
迷你世界脚本显示板管理接口:DisPlayBoard
显示板管理接口:DisPlayBoard 迷你世界 更新时间: 2023-04-26 10:21:14 具体函数名及描述如下: 序号 函数名 函数描述 1 showBoard(...) 对玩家显示显示板 2 hideBoard(...) 对玩家隐藏显示板 3 setBoardPicture 对玩家设置显示板的图片…...
如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能
作者:来自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中,通过使用 LLM 生成的词汇,为搜索应用增强自动补全功能,实现更智能、更动态的搜索建议。 自动补全是搜索应用中的一项关键功能,它通过在用户输入时实…...
电路基础:【1】PN结二极管制作电桥点亮LED灯
第一章:PN结二极管制作电桥点亮LED灯 文章目录 第一章:PN结二极管制作电桥点亮LED灯前言一、电路原理二、电路图与元器件1.电路图 做实验总结 前言 在本章中,我们将探讨如何通过PN结二极管制作电桥电路,并利用该电路点亮LED灯。L…...
蓝桥与力扣刷题(蓝桥 门牌制作)
题目:小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户,门牌号从 1 到 2020编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7&…...
unity console日志双击响应事件扩展
1 对于项目中一些比较长的日志,比如前后端交互协议具体数据等,这些日志内容可能会比较长,在unity控制面板上查看不是十分方便,我们可以对双击事件进行扩展,将日志保存到一个文本中,然后用系统默认的文本查看…...
基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程
一、Django项目初始化 1.创建Django项目 Django-admin startproject 项目名 2.安装 djangorestframework pip install djangorestframework 解释: Django REST Framework (DRF) 是基于 Django 框架的一个强大的 Web API 框架,提供了多种工具和库来构建 RESTf…...
unittest框架 核心知识的系统复习及与pytest的对比
1. unittest 介绍 是什么:Python 标准库自带的单元测试框架,遵循 xUnit 架构(类似Java的JUnit)。 核心概念: TestCase:测试用例的基类,所有测试类需继承它。 TestSuite:测试套件&a…...
嵌入式硬件设计SPI时需要注意什么?
嵌入式硬件设计SPI时需要注意什么? 1. 硬件设计注意事项 关键点注意事项1. 信号完整性- 缩短SCK、MOSI、MISO的走线长度,避免反射干扰。- 使用屏蔽线或差分信号(高速场景)。- 阻抗匹配(特别是高频信号,如50Ω端接)。2. 电源与地线- 电源去耦:每个SPI芯片的VCC附近放置0…...
vscode远程ssh链接服务器
前提:安装并配置好 ssh 服务,并且远程主机和本地主机在同一个局域网。 降级到1.85.2版本并禁用自动更新,因为最新的vscode不支持remote SSH。 【VS Code】VS Code不再支持remote SSH 1.在vscode 扩展中搜索Remote - SSH,下载安装扩展 2.点击 远程资源管理…...
97k倍区间
97k倍区间 ⭐️难度:中等 🌟考点:暴力,2017省赛 📖 📚 import java.util.Scanner;public class Main {static int N 100010;public static void main(String[] args) {Scanner sc new Scanner(System.…...
绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色教程 通过 Lr 软件丰富的工具和功能,对风景照片在色彩、影调等方面进行调整。例如利用基本参数调整选项,精准控制照片亮度、对比度、色温、色调等基础要素;运用 HSL 面板可对不同色彩的色相、饱和度以及明亮度进行单独调节;利…...
双王炸爆单,问界M8、M9怎么选?
文 | AUTO芯球 作者 | 雷慢 问界M8一小时小订7500台, 新问界M9一小时订单3800台。 余承东这次直接把一对王炸打了出来, 来看这对大小王, 问界M8预售价36.8万到45.8万, 问界M9预售价47.8万到57.8万, 这两款车&…...
【自学笔记】OpenStack基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 OpenStack基础知识点总览一、OpenStack概述1.1 OpenStack起源1.2 OpenStack的目标与优势1.3 OpenStack的常见核心项目 二、OpenStack的节点类型2.1 控制节点2.2 网络…...
同步 Fork 仓库的命令
同步 Fork 仓库的命令 要将您 fork 的仓库的 main 分支与原始仓库(fork 源)同步,您可以使用以下命令: 首先,确保您已经添加了原始仓库作为远程仓库(如果尚未添加): git remote add…...
2025-03-04 学习记录--C/C++-C语言 判断是否是素数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 C语言 判断是否是素数 一、代码 ⭐️ #include <stdio.h> #include <stdbool.h> // 使用 bool 类型// 判断是否是…...
1、CI/CD 平台安装部署(Gitlab+Jenkins)
CI/CD 平台安装部署 安装部署Gitlab安装Gitlab添加组、创建用户、创建项目 Jenkins 安装Maven 安装和配置Tomcat 安装和配置Jenkins 构建 Maven 项目自由风格项目构建 什么是CI/CD? 通俗来说就是启动一个服务,能够监听代码变化,然后自动执行构…...
数据集路径出错.yaml‘ images not found , missing path
方法一:删除settings.yaml 方法二:dataset_name.yaml改用绝对路径,如最后一张图 错误分析: dataset_name.yaml中的path的路径仅支持绝对路径,写相对路径就会搜索不到,使用settings.json中的路径࿰…...
零基础学习Python 之类(Class)和实例(Instance)_我的学习Python记录12
零基础学习Python 之类(Class)和实例(Instance)_我的学习Python记录12 目录 什么是类和实例?类的作用如何定义类?如何创建实例?类的属性和方法 属性方法 实际案例 案例 1:学生信息…...
Map<String,Object>转换为XML报文的方法
1. 使用 JAXB (Java Architecture for XML Binding) JAXB 是 Java 标准库的一部分,支持将 Java 对象与 XML 相互转换。虽然 JAXB 主要用于将 Java 对象转换为 XML,但可以通过一些技巧将 Map<String, Object> 转换为 XML。 示例代码 import java…...
Linux:如何安装虚拟机
Linux:如何安装虚拟机 第一步首先打开阿里巴巴开源镜像网站然后点击相应要下载链接 选择自己需要的 这个是完整版 这个是联网进行安装系统 这个是基础版只有命令行界面 这里我选择下载基础版 下载好打开vmwareworkstation 开始安装...
HTML 编辑器推荐与 VS Code 使用教程
在进行 HTML 编程时,选择一款合适的 HTML 编辑器能极大地提高开发效率。以下为大家推荐几款常用且功能强大的 HTML 编辑器,同时详细介绍如何使用 VS Code 创建和预览 HTML 文件。 一、HTML 编辑器推荐 VS Code:由微软开发,是一款…...