docker 安装 Rabbitmq 详解

news/2025/2/21 2:44:08/

        在平常的开发工作中,我们经常会使用到 rabbitmqrabbitmq 主要可以进行应用解耦、异步通信、流量削峰、负载均衡、消息持久化、死信队列等。比如商城系统,下单后,通过消息队列通知库存系统、积分系统、物流系统等。发送短信时通过消息队列异步通知,导入处理大文件时通过消息队列异步处理等。那么 docker 下如何安装 rabbitmq 呢?今天简单来总结下主要步骤。

     1:拉取镜像

        通过命令 docker pull rabbitmq:版本号,拉取镜像,如果不输入则默认拉取最新版本的镜像。

        注意rabbitmq 镜像分为数字版本镜像和带 management  的镜像。带 management 的主要是集成了管理界面和相关插件,管理界面需要运行一个 Web 服务器来提供服务。开发、测试阶段,需要使用管理页面直观的看到消息发送及接受情况,使用 management 可以提高工作效率。数字版本镜像只包含 rabbitmq 的核心功能,不包含管理界面和相关插件,所以其资源占用相对较少。如果对资源占用有严格的要求,且不需要可视化管理页面那就使用数字版本镜像。

        

     2:创建挂载目录

# 数据持久化目录
mkdir -p  /docker/rabbitmq/data:/var/lib/rabbitmq# 日志目录
mkdir -p  /docker/rabbitmq/logs:/var/log/rabbitmq

      3:启动 rabbitmq

      (1):新建 docker-compose.yml 文件

rabbitmq:# 带有管理界面的 rabbitmq 镜像image: rabbitmq:management  container_name: rabbitmqports:# AMQP 协议端口- "5672:5672" # rabbitmq 管理界面端口 - "15672:15672"  volumes:# 数据持久化目录- /usr/local/docker/rabbitmq/data:/var/lib/rabbitmq# 日志目录- /usr/local/docker/rabbitmq/logs:/var/log/rabbitmq environment:# 设置用户名RABBITMQ_DEFAULT_USER: guest# 设置密码RABBITMQ_DEFAULT_PASS: 123456restart: always

      (2):启动 docker compose up rabbitmq

        启动报错,大致意思就是打开log目录没有权限,报错如下: 

        解决方案为给 /docker/rabbitmq/logs 目录添加权限,命令为 chmod  777 /docker/rabbitmq/logs,执行完成后,可以查看 logs 目录的权限,查看命令为 ls -l (小写的L),查看如下:

        

        chmod 777 命令详解:chmod 用于修改文件或者目录访问权限。777 是采用数字的方式设置权限,第一个表示文件或者目录所有者(owner)权限、第二个表示所属组(group)权限、第三个表示其他用户(others)的权限。

        读取权限(r):对应值为4

        写入权限(w):对应值为2

        执行权限(x):对应值为1

        没有权限:对应值为0

        7 代表拥有读取权限(4)、写入权限(2)和执行权限(1),即 4+2+1=7,权限为 rwx,即目录所有者、所属组、其他用户都可以操作该目录中的文件,新增、删除、修改、读取文件。

        重新启动 rabbitmq,启动成功,日志如下:

        

        可以使用 docker ps 查看启动的容器,如下:

     4:进行测试

        访问 ip地址 + 15672 端口,如 127.0.0.1::15672,访问成功,登录页面如下:

        可能遇到的问题,访问不同,那么可能是防火墙端口的问题,可能是 15672 端口防火墙未开导致的,不同的内核版本有不同的对应命令,如果是 Centos 内核版本,查看版本可以用 cat /etc/os-release 命令,可以先查看 15672 端口是否开了防火墙,如果没开,则添加后重启防火墙,相关命令如下:

        查看防火墙开端口:firewall-cmd --zone=public --list-ports
        添加端口:firewall-cmd --zone=public --add-port=15672/tcp --permanent
        重启防火墙:firewall-cmd --reload

        以上为 docker 安装 rabbitmq 的基本步骤,主要是 docker-compose.yml 文件的编写。配置挂载目录,可以防止重启 rabbitmq 的时候,配置丢失等。消息队列可以实现异步通信、应用解耦、流量削峰等。


http://www.ppmy.cn/news/1573362.html

相关文章

3D与2D机器视觉机械臂引导的区别

3D与2D机器视觉在机械臂引导中的主要区别如下: 数据维度 2D视觉:仅处理平面图像,提供X、Y坐标信息,无法获取深度(Z轴)数据。 3D视觉:处理三维空间数据,提供X、Y、Z坐标及物体的姿态…

嵌入式音视频开发(三)嵌入式音视频开发(三)直播协议及编码器

系列文章目录 嵌入式音视频开发(零)移植ffmpeg及推流测试 嵌入式音视频开发(一)ffmpeg框架及内核解析 嵌入式音视频开发(二)ffmpeg音视频同步 嵌入式音视频开发(三)直播协议及编码器…

Swift 的 KeyPath 是什么?

Swift 的 KeyPath 是什么? 一、语法解析二、KeyPath 的核心作用1. 类型安全的属性引用2. 动态访问属性3. 函数式编程与数据驱动 三、SwiftUI 中的典型应用场景1. 动态 UI 组件配置2. 与 dynamicMemberLookup 结合3. 动画与状态管理 四、对比其他技术五、进阶技巧1. …

【前端】Vue组件库之Element: 一个现代化的 UI 组件库

文章目录 前言一、官网1、官网主页2、设计原则3、导航4、组件 二、核心功能:开箱即用的组件生态1、丰富的组件体系2、特色功能亮点 三、快速上手:三步开启组件化开发1、安装(使用Vue 3)2、全局引入3、按需导入(推荐&am…

DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

Win10系统Docker+DeepSeek+ragflow搭建本地知识库

文章目录 1、安装ollama1.1 下载1.2 安装1.3 cmd命令行测试安装成功1.4 拉取模型2、安装ragflow2.1 下载项目2.2 通过docker拉取镜像安装2.3 查看docker日志是否安装成功3、模型配置3.1 第一次登录需要注册3.2 模型添加4、知识库配置4.1 创建知识库4.2 上传文档4.3 解析5、聊天…

【学习】验证数独的正确性

源于面试的一个问题,在leetcode里也有这道题,参考站内的一篇文章。 首先此问题的分析需要满足三个约束条件: 每行不能有重复的数每列不能有重复的数每个3*3的方格中不能有重复的数 其中前两个约束条件都是容易满足的,关键在第三…

【Linux】在 ubuntu 18.04 arm 容器中安装ROS环境

在ubuntu18.04arm(docker容器)中安装ROS环境。 1. 简述 由于本人对ROS并不是特别了解,这里就不引入ROS的背景介绍了。 ROS的安装主要基于官网的教程,先选择你当前使用的ubuntu版本对应的ROS,然后根据具体版本的ROS官…