Docker Compose重啟RabbitMQ數(shù)據(jù)丟失
前言
使用 Docker Compose 部署 RabbitMQ 時(shí),容器重啟后數(shù)據(jù)丟失是高頻痛點(diǎn):配置好的隊(duì)列、交換機(jī)、消息全部清空,服務(wù)完全重置。
本文結(jié)合真實(shí)環(huán)境命令,直擊核心問(wèn)題,用最簡(jiǎn)配置解決數(shù)據(jù)持久化難題。
一、問(wèn)題現(xiàn)場(chǎng)還原
1. 查看數(shù)據(jù)目錄(關(guān)鍵證據(jù))
執(zhí)行命令查看 RabbitMQ 數(shù)據(jù)存儲(chǔ)目錄:
[root@localhost docker-compose-test]# ls rabbitmq-workflow/data/ rabbit@mqbroker-aaa rabbit@mqbroker-aaa.pid rabbit@mqbroker-aaa-plugins-expand
核心發(fā)現(xiàn):RabbitMQ 數(shù)據(jù)目錄命名規(guī)則為 rabbit@容器主機(jī)名。
2. 核心配置(僅保留關(guān)鍵代碼)
docker-compose.yaml 修復(fù)后的最簡(jiǎn)關(guān)鍵配置:
version: '3.3'
services:
# RabbitMQ消息隊(duì)列服務(wù)
rabbitmq-workflow:
# ?? 解決數(shù)據(jù)丟失的核心配置(固定主機(jī)名)
hostname: mqbroker-aaa
image: rabbitmq:3.9.21-management
ports:
- "5672:5672"
- "15672:15672"3. 故障現(xiàn)象
未配置 hostname 前:
- 啟動(dòng)容器并創(chuàng)建業(yè)務(wù)隊(duì)列;
- 重啟容器后,所有數(shù)據(jù)丟失;
- 數(shù)據(jù)目錄自動(dòng)生成新的隨機(jī)名稱(chēng)文件夾,舊數(shù)據(jù)無(wú)法加載。
二、根因分析
RabbitMQ 重啟丟數(shù)據(jù)的唯一核心原因:容器主機(jī)名不固定!
- RabbitMQ 數(shù)據(jù)目錄強(qiáng)依賴(lài)容器內(nèi)部主機(jī)名生成;
- Docker 默認(rèn)主機(jī)名為隨機(jī)容器ID,重啟必變;
- 主機(jī)名變更 → RabbitMQ 無(wú)法識(shí)別舊數(shù)據(jù)目錄 → 新建目錄 → 數(shù)據(jù)丟失。
三、終極解決方案
只需要一行配置,固定容器內(nèi)部主機(jī)名,徹底解決問(wèn)題:
hostname: mqbroker-aaa
配置后,容器重啟主機(jī)名永久不變,RabbitMQ 始終讀取同一數(shù)據(jù)目錄。
四、驗(yàn)證修復(fù)效果
- 重啟容器
docker-compose down && docker-compose up -d
- 查看固定主機(jī)名
docker exec rabbitmq-workflow hostname
輸出:mqbroker-aaa(固定不變)
- 數(shù)據(jù)目錄始終唯一,無(wú)新文件夾生成。
到此這篇關(guān)于Docker Compose重啟RabbitMQ數(shù)據(jù)丟失的文章就介紹到這了,更多相關(guān)Docker Compose重啟RabbitMQ丟失內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker搭建簡(jiǎn)單的應(yīng)用棧與容器Hello World訪問(wèn)詳解
這篇文章主要介紹了Docker搭建簡(jiǎn)單的應(yīng)用棧與容器Hello World訪問(wèn),結(jié)合實(shí)例形式詳細(xì)分析了Docker應(yīng)用容器棧的獲取、互聯(lián)、啟動(dòng)、配置以及應(yīng)用訪問(wèn)測(cè)試相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
基于Maven+Docker的WebApp打包與部署全過(guò)程
這篇文章主要介紹了基于Maven+Docker的WebApp打包與部署的相關(guān)資料,文中通過(guò)代碼講解了如何找到正確的JAR包、覆蓋Docker使用的JAR、構(gòu)建Docker鏡像、解決Docker構(gòu)建失敗的問(wèn)題以及在服務(wù)器上部署,需要的朋友可以參考下2026-02-02
docker-compose build使用參數(shù)args方式
這篇文章主要介紹了docker-compose build使用參數(shù)args方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
docker容器啟動(dòng)設(shè)置固定IP的實(shí)現(xiàn)
本文主要介紹了docker容器啟動(dòng)設(shè)置固定IP的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
解決'nacos默認(rèn)secret.key配置不當(dāng)權(quán)限繞過(guò)漏洞'的問(wèn)題
這篇文章主要介紹了解決“nacos默認(rèn)secret.key配置不當(dāng)權(quán)限繞過(guò)漏洞“的問(wèn)題,解決這個(gè)問(wèn)題需要對(duì)這個(gè)key的默認(rèn)值進(jìn)行修改,建議不要使用明文,可以用base64,key的長(zhǎng)度要32位以上,下面介紹一下在兩種環(huán)境下的修改方法,感興趣的朋友一起看看吧2024-01-01
docker部署mysql和nginx服務(wù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了docker部署mysql和nginx服務(wù)的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
linux上安裝Docker(非常簡(jiǎn)單的安裝方法)
今天小編就為大家分享一篇關(guān)于linux上安裝Docker(非常簡(jiǎn)單的安裝方法),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
在 Docker 環(huán)境中部署和運(yùn)行 Nginx 的方法
在當(dāng)今的技術(shù)領(lǐng)域,Docker 就像一位神奇的魔法師,能夠讓我們輕松地管理和部署各種應(yīng)用程序,這篇文章主要介紹了在 Docker 環(huán)境中部署和運(yùn)行 Nginx 的方法,需要的朋友可以參考下2024-12-12

