rabbitmq容器化部署
需求 容器化部署rabbitmq服务
部署服务
找到如下官网信息版本
官网版本发布信息

这里看到最新版本是3.13版本,这里在3.13中找一个版本下载容器镜像即可。
找到dockrhub.com中 找到3.13.2版本镜像。

容器服务安装此处省略
现在下载容器镜像需要配置容器代理
~# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://hub.iyuu.cn","https://docker.1panel.live"]
}
下载rabbitmq镜像
docker pull rabbitmq:3.13.2-management
部署容器服务
docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3.13.2-management
查看容器状态,容器异常退出,查看容器日志
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a739628b8375 rabbitmq:3.13.2-management "docker-entrypoint.s…" About an hour ago Exited (134) About an hour ago n# docker logs a73
Failed to create thread: Operation not permitted (1)
Aborted (core dumped)
这个报错是容器出现了权限问题,部署容器的时候需要加root特权的,这里加入参数docker时加上参数 --privileged=true
privileged=true:获得真正的root权限
删除这个异常退出的容器 重新部署
docker run -d -p 15672:15672 -p 5672:5672 --privileged=true --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3.13.2-management
bda51306d6691788437c49f1a5284c84be85abf10653ac5eb8930283a969b6e8
:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bda51306d669 rabbitmq:3.13.2-management "docker-entrypoint.s…" 2 seconds ago Up 1 second 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp some-rabbit
查看到容器服务已正常运行 无报错
验证及访问服务
访问 web端 用IP地址+15672 账号密码 user/password

到这里 mq服务部署 配置无误。
rabbitmq配置LTS
这边配置LTS依然在容器环境下
以下代码在宿主机上运行
# 创建 CA 证书
# 创建一个 CA 密钥文件,用于签发证书。
openssl genrsa -out ca_key.pem 4096# 使用 CA 密钥创建一个自签名的 CA 证书。
openssl req -new -x509 -days 3650 -key ca_key.pem -out ca_certificate.pem -subj "/C=US/ST=California/L=San Francisco/O=YourOrg/CN=YourOrg CA"# 创建服务器证书和密钥
# 创建一个服务器密钥文件。
openssl genrsa -out server_key.pem 4096# 使用服务器密钥创建一个证书请求。
openssl req -new -key server_key.pem -out server_csr.pem -subj "/C=US/ST=California/L=San Francisco/O=YourOrg/CN=yourserver.example.com"# 使用 CA 证书签发服务器证书。
openssl x509 -req -in server_csr.pem -CA ca_certificate.pem -CAkey ca_key.pem -CAcreateserial -out server_certificate.pem -days 365
确认所有证书文件都已正确生成:
•ca_key.pem:CA 密钥文件
•ca_certificate.pem:CA 证书文件
•server_key.pem:服务器密钥文件
•server_certificate.pem:服务器证书文件
以下代码在宿主机运行
提前把配置文件从容器服务中取出来配置文件路径是/etc/rabbitmq/conf.d/10-defaults.conf
docker cp 容器名称:/etc/rabbitmq/conf.d/10-defaults.conf .
把配置文件获取到本地后开始编辑配置文件,追加以下配置文件
listeners.ssl.default = 5671ssl_options.cacertfile = /etc/rabbitmq/ca_certificate.pem
ssl_options.certfile = /etc/rabbitmq/server_certificate.pem
ssl_options.keyfile = /etc/rabbitmq/server_key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = true
注意 上面生成的ssl配置文件是在宿主机的路径下,配置文件指定的路径是容器内的路径,这里要注意替换配置文件路径。
这里需要提前给上面的配置文件和秘钥授权不然会有如下报错。
报错参考如下:这里是因为秘钥文件在宿主机是因root创建的,容器内是已rabbitmq用户运行的程序,这里权限访问不到,会报错路径找不到文件。
2024-09-14 07:05:01.736878+00:00 [error] <0.156.0> ssl_options.keyfile invalid, file does not exist or cannot be read by the node
2024-09-14 07:05:01.747045+00:00 [error] <0.156.0> Error preparing configuration in phase validation:
2024-09-14 07:05:01.747111+00:00 [error] <0.156.0> - ssl_options.keyfile invalid, file does not exist or cannot be read by the node2024-09-14 07:05:01.749037+00:00 [error] <0.156.0>
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0> BOOT FAILED
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0> ===========
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0> Error during startup: {error,failed_to_prepare_configuration}
2024-09-14 07:05:01.749037+00:00 [error] <0.156.0>
进入容器查看服务运行的用户,容器内是用rabbitmq用户运行的程序

解决以上报错给文件授权
# 在配置文件和秘钥文件 的存储目录执行
chmod 777 *
把run命令 准备好,一般建议放到sh文件中。(注意秘钥文件路径)
docker run -d --hostname my-rabbit --privileged=true --name some-rabbit -v /root/rabbitmq/10-defaults.conf:/etc/rabbitmq/conf.d/10-defaults.conf -v /root/rabbitmq/ca_certificate.pem:/etc/rabbitmq/ca_certificate.pem -v /root/rabbitmq/server_certificate.pem:/etc/rabbitmq/server_certificate.pem -v /root/rabbitmq/server_key.pem:/etc/rabbitmq/server_key.pem -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 5671:5671 -p 5672:5672 -p 15672:15672 rabbitmq:3.13.2-management
查看容器日志信息
2024-09-14 08:05:32.133593+00:00 [info] <0.669.0> Ready to start client connection listeners
2024-09-14 08:05:32.135054+00:00 [info] <0.822.0> started TCP listener on [::]:5672
2024-09-14 08:05:32.136665+00:00 [info] <0.842.0> started TLS (SSL) listener on [::]:5671completed with 6 plugins.
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> Server startup complete; 6 plugins started.
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> * rabbitmq_prometheus
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> * rabbitmq_federation
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> * rabbitmq_management
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> * rabbitmq_management_agent
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> * rabbitmq_web_dispatch
2024-09-14 08:05:32.207988+00:00 [info] <0.669.0> * oauth2_client
2024-09-14 08:05:32.218109+00:00 [info] <0.9.0> Time to start RabbitMQ: 5468 ms
2024-09-14 08:05:45.800176+00:00 [info] <0.886.0> Waiting for Mnesia tables for 30000 ms, 9 retries left
2024-09-14 08:05:45.800326+00:00 [info] <0.886.0> Successfully synced tables from a peer
2024-09-14 08:05:46.794458+00:00 [info] <0.914.0> Waiting for Mnesia tables for 30000 ms, 9 retries left
2024-09-14 08:05:46.794598+00:00 [info] <0.914.0> Successfully synced tables from a peer
2024-09-14 08:44:57.191730+00:00 [notice] <0.1672.0> TLS server: In state hello at tls_record.erl:561 generated SERVER ALERT: Fatal - Unexpected Message
2024-09-14 08:44:57.191730+00:00 [notice] <0.1672.0> - {unsupported_record_type,13}
最重要的要搜索到以下两句话,这个是可以证明TLS已启用状态了,基本可以说是没有问题了。
2024-09-14 08:05:32.135054+00:00 [info] <0.822.0> started TCP listener on [::]:5672
2024-09-14 08:05:32.136665+00:00 [info] <0.842.0> started TLS (SSL) listener on [::]:5671
参考官网链接

服务验证
这里访问 IP地址+端口号 先测试一下 管理端是否可以访问,账号密码是 user/password,就是上面容器传进去的变量。这边可以访问到,就证明MQ是没有明显报错的。

TLS验证
先在其它宿主机上telnet 5671 TLS的专用端口 是否可以通,目前看到端口可以通,基本无误,可以联系研发进行 下一步程序连接TLS端口的测试和验证。
/rabbitmq# telnet 110.120.110.110 5671
Trying 110.120.110.110...
Connected to 110.120.110.110.
Escape character is '^]'.
参考官网的配置文件
相关文章:
rabbitmq容器化部署
需求 容器化部署rabbitmq服务 部署服务 找到如下官网信息版本 官网版本发布信息 这里看到最新版本是3.13版本,这里在3.13中找一个版本下载容器镜像即可。 找到dockrhub.com中 找到3.13.2版本镜像。 容器服务安装此处省略 现在下载容器镜像需要配置容器代理 ~#…...
如何用 Helm Chart 安装指定版本的 GitLab Runner?
本分分享如何使用 Helm 来在 Kubernetes 集群上安装极狐GitLab Runner。整体步骤分为:Helm 的安装、vaules.yaml 文件的配置、Runner 的安装、Runner 的测试。 极狐GitLab 为 GitLab 在中国的发行版,中文版本对中国用户更友好。极狐GitLab 支持一键私有…...
el-table使用合计和固定列时,滚动条被覆盖区域无法拖拽问题
pointer-events文档 解决思路为通过pointer-events实现事件穿透,不响应固定列的拖拽,而是响应其子元素的拖拽事件 /deep/.el-table__fixed, /deep/.el-table__fixed-right {pointer-events: none; } /deep/.el-table__fixed *, /deep/.el-table__fixed-…...
【疑难杂症2024-005】docker-compose中设置容器的ip为固定ip后,服务无法启动
本文由Markdown语法编辑器编辑完成。 1.背景: 我们的产品是通过docker image的方式发布,并且编排在docker-compose.yml中发布。在同一个docker-compose.yml中的服务,相互之间,可以通过对方的服务名和端口,来直接访问…...
uView使用心得
说实话我不爱用这个库,感觉很鸡肋,坑很多,可能没用习惯 picker选择器 绑定默认值是通过设置index,并且这个index需要通过api设置进去,设置defalutindex绑定值无效(只有初始化可以,后面动态改变…...
RabbitMQ(高阶使用)死信队列
文章内容是学习过程中的知识总结,如有纰漏,欢迎指正 文章目录 一、什么是死信队列? 二、死信队列使用场景 三、死信队列如何使用 四、打车超时处理 1.打车超时实现 以下是本篇文章正文内容 一、什么是死信队列? 先从概念解释上搞…...
怎么安装docker-compose
使用下列命令下载docker-compose(可选择其他版本) wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 --no-check-certificate然后把该文件移动到/usr/local/bin/并重命名 mv docker-compose-linux-x86_…...
【机器学习】--- 自监督学习
1. 引言 机器学习近年来的发展迅猛,许多领域都在不断产生新的突破。在监督学习和无监督学习之外,自监督学习(Self-Supervised Learning, SSL)作为一种新兴的学习范式,逐渐成为机器学习研究的热门话题之一。自监督学习…...
【Linux修行路】网络套接字编程——UDP
目录 ⛳️推荐 前言 六、Udp Server 端代码 6.1 socket——创建套接字 6.2 bind——将套接字与一个 IP 和端口号进行绑定 6.3 recvfrom——从服务器的套接字里读取数据 6.4 sendto——向指定套接字中发送数据 6.5 绑定 ip 和端口号时的注意事项 6.5.1 云服务器禁止直接…...
哈希表数据结构学习
哈希表数据结构学习 哈希表基本概念哈希方法单值哈希与多值哈希哈希冲突1. 开放寻址法(Open Addressing)2. 链地址法(Chaining)3. 再哈希法(Rehashing)4. 建立公共溢出区(Overflow Area…...
数据结构——“二叉搜索树”
二叉搜索树是一个很重要的数据结构,它的特殊结构可以在很短的时间复杂度找到我们想要的数据。最坏情况下的时间复杂度是O(n),最好是O(logn)。接下来看一看它的接口函数的实现。 为了使用方便,这里采用模版的方式: 一、节点 temp…...
Java零基础-Java对象详解
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…...
从Prompt到创造:解锁AI的无限潜能
文章目录 🍊AI内容创作核心:提示词Prompt1 什么是提示词工程?1.1 提示词的原理是什么?1.2 提示词工程师:百万年薪的职业?1.3 谁都能成为提示词工程师吗? 2 提示词书写的基本技巧3 常见的提示词框架3.1 CO-…...
sqlgun靶场攻略
打开界面 1.输入框测试回显点 -1union select 1,2,3#出现回显点 2.查看数据库名 -1union select 1,2,database()# 3.查看表名 -1union select 1,2,group_concat(table_name) from information_schema.tables where table_schemasqlgunnews# 4.查看admin表中列名 -1union se…...
《网络协议 - HTTP传输协议及状态码解析》
文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传…...
9.11 QT ( Day 4)
一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…...
利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(四)
简介 随着生成式人工智能的兴起,传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求,今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight,利用生成式AI的能力来加速业务决策,从而提高业务生产力。…...
2024.9最新:CUDA安装,pytorch库安装
目录 一、CUDA安装 1.查看自己电脑适配的CUDA的最高版本 2.安装CUDA 3.检查环境变量是否配置,安装是否成功 二、pytorch库安装 1.pytorch库下载 2.选择合适的版本 3.查看版本 一、CUDA安装 1.查看自己电脑适配的CUDA的最高版本 在命令提示符里输入nvidia-…...
Vue3.0组合式API:setup()函数
1、什么是组合式API Vue 3.0 中新增了组合式 API 的功能,它是一组附加的、基于函数的 API,可以更加灵活地组织组件代码。通过组合式 API 可以使用函数而不是声明选项的方式来编写 Vue 组件。因此,使用组合式 API 可以将组件代码编写为多个函…...
利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)
简介 随着生成式人工智能的兴起,传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求,今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight,利用生成式AI的能力来加速业务决策,从而提高业务生产力。…...
GESP2025年3月认证C++三级( 第一部分选择题(1-8))
🎯 第1题:Base64魔法箱📜 题目核心: 👉 每 3个字节 → 变成4个字节1、🧠 故事理解有一个魔法机器:👉 每放进去 3个苹果 🍎🍎🍎(不足3个…...
嵌入式图形原语抽象层:面向MCU的轻量绘图核心设计
1. Firmwork-Graphics-Core 模块深度解析:嵌入式图形子系统的设计哲学与工程实践Firmwork-Graphics-Core 是 Firmwork 嵌入式框架中可选的底层图形模块,其定位并非通用 GUI 库(如 LVGL 或 emWin),而是一个面向资源受限…...
2026 codex 大模型 api 配置指南:auth.json、config.toml 与 401/超时排查
当 codex --version 已经能正常输出,很多人会以为接下来只剩下提问和改代码。但真正决定 Codex 能不能顺利进入项目的,往往是 codex 大模型 api 有没有按要求接好:只要 auth.json、config.toml 或网关地址有一点偏差,就可能马上碰…...
OpenClaw低代码开发:Qwen2.5-VL-7B自动化流程设计器入门
OpenClaw低代码开发:Qwen2.5-VL-7B自动化流程设计器入门 1. 为什么需要可视化流程设计器? 上周我尝试用OpenClaw自动处理一批产品截图和说明文档时,遇到了一个典型问题:需要先让Qwen2.5-VL-7B识别图片中的关键元素,再…...
嵌入式LED闪烁控制库Blinker工程实践指南
1. Blinker:嵌入式LED闪烁控制库的工程化实现解析Blinker并非一个广为人知的通用开源库,其项目摘要“Simple library for LED blinking”与关键词“blinking, led”表明这是一个高度聚焦、轻量级的底层驱动组件。在嵌入式系统开发中,“LED闪烁…...
Ubuntu20.04部署RTKLIB-QT:从源码编译到GUI应用实战
1. 为什么要在Ubuntu上部署RTKLIB-QT? 如果你正在处理GNSS(全球导航卫星系统)数据,比如GPS、GLONASS或北斗的观测数据,RTKLIB绝对是你工具箱里不可或缺的利器。这个开源软件包在Windows下有成熟的GUI版本,但…...
机械臂空间直线圆弧圆插补代码介绍
【机械臂空间直线&圆弧&圆插补】 代码主要功能: 1. 正逆运动学解析解; 2. 空间直线、圆弧以及圆插补; 3. 基于Slerp、Nlerp算法的机械臂末端两姿态插补算法; 4. 机械臂空间直线、圆弧以及圆插补。 购前须知: 1. 代码均为个人手写&…...
云端开发新选择:星图OpenClaw镜像+千问3.5-9B联调
云端开发新选择:星图OpenClaw镜像千问3.5-9B联调 1. 为什么选择云端联调方案? 去年尝试在MacBook Pro上本地部署OpenClaw时,风扇狂转的噪音让我意识到一个问题:个人设备跑大模型自动化框架的组合实在太吃资源。当时为了调试一个…...
基于Xilinx Artix-7的JPEG2000图像无损压缩系统:完整工程与独立模块化设计
JPEG2000 图像无损压缩算法 FPGA第三方IP JPEG2K是基于xilinx Artix-7的FPGA完整工程,内有完整的MATLB算法工程和RTL源代码,还有详细的文档 JPEG2000压缩系统部分由6个独立模块组成:去马赛克模块、伽马校正模块、分量间变换模块、小波变换模…...
Matlab vs Python:灰色关联分析(GRA)可视化效果大比拼
Matlab vs Python:灰色关联分析可视化效果与实现深度对比 在数据科学领域,灰色关联分析(Grey Relational Analysis, GRA)作为一种强大的小样本数据分析工具,正逐渐受到研究者和实践者的青睐。面对两种主流编程语言Matlab和Python,…...
