Docker Compose重启RabbitMQ数据丢失

 更新时间:2026年04月01日 08:18:57   作者:Oneslide  
本文主要介绍了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 前:

  1. 启动容器并创建业务队列;
  2. 重启容器后,所有数据丢失
  3. 数据目录自动生成新的随机名称文件夹,旧数据无法加载。

二、根因分析

RabbitMQ 重启丢数据的唯一核心原因:容器主机名不固定!

  1. RabbitMQ 数据目录强依赖容器内部主机名生成;
  2. Docker 默认主机名为随机容器ID,重启必变;
  3. 主机名变更 → RabbitMQ 无法识别旧数据目录 → 新建目录 → 数据丢失。

三、终极解决方案

只需要一行配置,固定容器内部主机名,彻底解决问题:

hostname: mqbroker-aaa

配置后,容器重启主机名永久不变,RabbitMQ 始终读取同一数据目录。

四、验证修复效果

  1. 重启容器
docker-compose down && docker-compose up -d
  1. 查看固定主机名
docker exec rabbitmq-workflow hostname

输出:mqbroker-aaa(固定不变)

  1. 数据目录始终唯一,无新文件夹生成。

到此这篇关于Docker Compose重启RabbitMQ数据丢失的文章就介绍到这了,更多相关Docker Compose重启RabbitMQ丢失内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker如何安装doris

    docker如何安装doris

    文章介绍了使用Docker安装Apache Doris的两种方法:通过Docker Compose部署和手动部署,前者通过创建`docker-compose.yml`文件并运行命令来启动集群,后者则需要手动拉取镜像、启动容器、复制安装包并解压、配置并启动服务
    2025-02-02
  • docker部署SSM项目(含打包)

    docker部署SSM项目(含打包)

    本文主要介绍了docker部署SSM项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Docker搭建简单的应用栈与容器Hello World访问详解

    Docker搭建简单的应用栈与容器Hello World访问详解

    这篇文章主要介绍了Docker搭建简单的应用栈与容器Hello World访问,结合实例形式详细分析了Docker应用容器栈的获取、互联、启动、配置以及应用访问测试相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 基于Maven+Docker的WebApp打包与部署全过程

    基于Maven+Docker的WebApp打包与部署全过程

    这篇文章主要介绍了基于Maven+Docker的WebApp打包与部署的相关资料,文中通过代码讲解了如何找到正确的JAR包、覆盖Docker使用的JAR、构建Docker镜像、解决Docker构建失败的问题以及在服务器上部署,需要的朋友可以参考下
    2026-02-02
  • docker-compose build使用参数args方式

    docker-compose build使用参数args方式

    这篇文章主要介绍了docker-compose build使用参数args方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • docker容器启动设置固定IP的实现

    docker容器启动设置固定IP的实现

    本文主要介绍了docker容器启动设置固定IP的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 解决'nacos默认secret.key配置不当权限绕过漏洞'的问题

    解决'nacos默认secret.key配置不当权限绕过漏洞'的问题

    这篇文章主要介绍了解决“nacos默认secret.key配置不当权限绕过漏洞“的问题,解决这个问题需要对这个key的默认值进行修改,建议不要使用明文,可以用base64,key的长度要32位以上,下面介绍一下在两种环境下的修改方法,感兴趣的朋友一起看看吧
    2024-01-01
  • docker部署mysql和nginx服务的示例详解

    docker部署mysql和nginx服务的示例详解

    这篇文章主要为大家详细介绍了docker部署mysql和nginx服务的相关知识,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • linux上安装Docker(非常简单的安装方法)

    linux上安装Docker(非常简单的安装方法)

    今天小编就为大家分享一篇关于linux上安装Docker(非常简单的安装方法),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 在 Docker 环境中部署和运行 Nginx 的方法

    在 Docker 环境中部署和运行 Nginx 的方法

    在当今的技术领域,Docker 就像一位神奇的魔法师,能够让我们轻松地管理和部署各种应用程序,这篇文章主要介绍了在 Docker 环境中部署和运行 Nginx 的方法,需要的朋友可以参考下
    2024-12-12

最新评论