Docker Compose重启RabbitMQ数据丢失
前言
使用 Docker Compose 部署 RabbitMQ 时,容器重启后数据丢失是高频痛点:配置好的队列、交换机、消息全部清空,服务完全重置。
本文结合真实环境命令,直击核心问题,用最简配置解决数据持久化难题。
一、问题现场还原
1. 查看数据目录(关键证据)
执行命令查看 RabbitMQ 数据存储目录:
[root@localhost docker-compose-test]# ls rabbitmq-workflow/data/ rabbit@mqbroker-aaa rabbit@mqbroker-aaa.pid rabbit@mqbroker-aaa-plugins-expand
核心发现:RabbitMQ 数据目录命名规则为 rabbit@容器主机名。
2. 核心配置(仅保留关键代码)
docker-compose.yaml 修复后的最简关键配置:
version: '3.3'
services:
# RabbitMQ消息队列服务
rabbitmq-workflow:
# 🔥 解决数据丢失的核心配置(固定主机名)
hostname: mqbroker-aaa
image: rabbitmq:3.9.21-management
ports:
- "5672:5672"
- "15672:15672"3. 故障现象
未配置 hostname 前:
- 启动容器并创建业务队列;
- 重启容器后,所有数据丢失;
- 数据目录自动生成新的随机名称文件夹,旧数据无法加载。
二、根因分析
RabbitMQ 重启丢数据的唯一核心原因:容器主机名不固定!
- RabbitMQ 数据目录强依赖容器内部主机名生成;
- Docker 默认主机名为随机容器ID,重启必变;
- 主机名变更 → RabbitMQ 无法识别旧数据目录 → 新建目录 → 数据丢失。
三、终极解决方案
只需要一行配置,固定容器内部主机名,彻底解决问题:
hostname: mqbroker-aaa
配置后,容器重启主机名永久不变,RabbitMQ 始终读取同一数据目录。
四、验证修复效果
- 重启容器
docker-compose down && docker-compose up -d
- 查看固定主机名
docker exec rabbitmq-workflow hostname
输出:mqbroker-aaa(固定不变)
- 数据目录始终唯一,无新文件夹生成。
到此这篇关于Docker Compose重启RabbitMQ数据丢失的文章就介绍到这了,更多相关Docker Compose重启RabbitMQ丢失内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Docker搭建简单的应用栈与容器Hello World访问详解
这篇文章主要介绍了Docker搭建简单的应用栈与容器Hello World访问,结合实例形式详细分析了Docker应用容器栈的获取、互联、启动、配置以及应用访问测试相关操作技巧,需要的朋友可以参考下2018-06-06
docker-compose build使用参数args方式
这篇文章主要介绍了docker-compose build使用参数args方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-01-01
解决'nacos默认secret.key配置不当权限绕过漏洞'的问题
这篇文章主要介绍了解决“nacos默认secret.key配置不当权限绕过漏洞“的问题,解决这个问题需要对这个key的默认值进行修改,建议不要使用明文,可以用base64,key的长度要32位以上,下面介绍一下在两种环境下的修改方法,感兴趣的朋友一起看看吧2024-01-01


最新评论