Docker 部署 MongoDB 并持久化數據

Docker 部署 MongoDB 并持久化數據

在現代開發中,MongoDB 作為 NoSQL 數據庫廣泛應用,而 Docker 則提供了高效的容器化方案。本教程將介紹如何使用 Docker 快速部署 MongoDB,并實現數據持久化,確保數據不會因容器重啟或刪除而丟失。


1. 準備環境

1.1 安裝 Docker 和 Docker Compose

如果你的系統尚未安裝 Docker 和 Docker Compose,可以參考以下命令進行安裝。

Ubuntu/Debian
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
CentOS
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo yum install -y epel-release
sudo yum install -y python3-pip
pip3 install docker-compose
驗證 Docker 版本
docker --version
docker-compose --version

2. 創建 MongoDB 數據存儲目錄

為了實現持久化存儲,我們需要在宿主機上創建一個目錄,用于存放 MongoDB 數據。

mkdir -p /home/middleware/mongodb/data

該目錄會被映射到 Docker 容器內的 /data/db,確保 MongoDB 重啟后數據不會丟失。


3. 使用 Docker Compose 部署 MongoDB

/home/middleware/mongodb 目錄下創建 docker-compose.yml 文件:

version: '3.8'  # 指定 Docker Compose 版本services:mongodb:  # 定義 MongoDB 服務image: mongo  # 使用官方 MongoDB 鏡像container_name: mongo  # 指定容器名稱restart: always  # 確保容器在崩潰或重啟后自動恢復ports:- "27017:27017"  # 映射宿主機的 27017 端口到容器environment:MONGO_INITDB_ROOT_USERNAME: admin  # 設置管理員用戶名MONGO_INITDB_ROOT_PASSWORD: admin123  # 設置管理員密碼volumes:- /home/middleware/mongodb/data:/data/db  # 數據持久化

4. 啟動 MongoDB 容器

執行以下命令啟動 MongoDB 容器:

cd /home/middleware/mongodb
docker-compose up -d

-d 選項表示以 后臺模式 運行。

檢查容器是否運行

docker ps | grep mongo

如果看到 mongo 容器在運行,則說明部署成功。


5. 連接 MongoDB

5.1 使用 Docker 進入 MongoDB 容器

docker exec -it mongo mongosh -u admin -p admin123 --authenticationDatabase admin

5.2 通過 MongoDB 客戶端連接

如果你使用的是 MongoDB Compass 或其他客戶端,可以使用以下連接字符串:

mongodb://admin:admin123@localhost:27017/

6. 測試數據持久化

  1. 創建數據庫并插入數據
use testDB
db.testCollection.insertOne({ name: "Hello MongoDB" })
  1. 刪除容器
docker-compose down
  1. 重新啟動 MongoDB 容器
docker-compose up -d
  1. 驗證數據是否仍然存在
use testDB
db.testCollection.find()

如果數據仍然存在,則表明 MongoDB 數據持久化成功!🎉


7. 停止 & 刪除 MongoDB 容器

如果你想停止 MongoDB 容器,可以執行:

docker-compose down

如果你要徹底刪除容器及其數據,執行:

rm -rf /home/middleware/mongodb

8. 總結

至此,我們已經成功使用 Docker Compose 部署了 MongoDB,并實現了數據持久化,保證容器重啟或刪除后數據仍然保留。

📌 關鍵步驟回顧:

  1. 安裝 Docker 和 Docker Compose
  2. 創建數據存儲目錄 /home/middleware/mongodb/data
  3. 編寫 docker-compose.yml 配置文件
  4. 使用 docker-compose up -d 啟動 MongoDB
  5. 連接 MongoDB 并驗證數據存儲
  6. 測試數據持久化功能

💡 優勢:
? 快速部署,簡化環境配置
? 使用 Docker 容器隔離,避免污染本機系統
? 持久化存儲數據,確保數據安全

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72789.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

信奧賽CSP-J復賽集訓(模擬算法專題)(3):P1089 [NOIP 2004 提高組] 津津的儲蓄計劃

信奧賽CSP-J復賽集訓(模擬算法專題)(3):P1089 [NOIP 2004 提高組] 津津的儲蓄計劃 題目描述 津津的零花錢一直都是自己管理。每個月的月初媽媽給津津 300 300 300 元錢,津津會預算這個月的花銷&#xff0…

日新F1、瑞研F600P 干線光纖熔接(熔接損耗最大0.03DB)

Ⅰ. 設備特性對比與實測驗證 1. 日新F1(兩馬達)極限參數 切割角度:必須≤0.3(雙邊累計誤差<0.6) ? 實測案例:切割0.35時,損耗波動達0.05-0.08dB(超干線標準&#xff09…

【量化科普】Sharpe Ratio,夏普比率

【量化科普】Sharpe Ratio,夏普比率 🚀量化軟件開通 🚀量化實戰教程 在量化投資領域,夏普比率(Sharpe Ratio)是一個非常重要的風險調整后收益指標。它由諾貝爾經濟學獎得主威廉F夏普(William…

數據結構--【順序表與鏈表】筆記

順序表 template <class T> class arrList :public List<T> //表示 arrList 類以公有繼承的方式繼承自 List<T> 類 //公有繼承意味著 List<T> 類的公共成員在 arrList 類中仍然是公共成員&#xff0c;受保護成員在 arrList 類中仍然是受保護成員。 { …

idea中隱藏目錄

可能的解決步驟&#xff1a; 排除目錄的方法是否在2021版本中有變化&#xff1f;應該沒有&#xff0c;還是通過右鍵標記為排除。 用戶可能想完全隱藏目錄&#xff0c;比如在項目視圖中不顯示&#xff0c;這可能需要調整項目視圖的設置&#xff0c;比如取消勾選“顯示排除的文件…

AWS 如何導入內部SSL 證書

SSL 證書的很重要的功能就是 HTTP- > HTTPS, 下面就說明一下怎么導入ssl 證書,然后綁定證書到ALB. 以下示例說明如何使用 AWS Management Console 導入證書。 從以下位置打開 ACM 控制臺:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,請查找 AWS Cer…

2025最新群智能優化算法:基于RRT的優化器(RRT-based Optimizer,RRTO)求解23個經典函數測試集,MATLAB

一、基于RRT的優化器 基于RRT的優化器&#xff08;RRT-based Optimizer&#xff0c;RRTO&#xff09;是2025年提出的一種新型元啟發式算法。其受常用于機器人路徑規劃的快速探索隨機樹&#xff08;RRT&#xff09;算法的搜索機制啟發&#xff0c;首次將RRT算法的概念與元啟發式…

doris: Oracle

Apache Doris JDBC Catalog 支持通過標準 JDBC 接口連接 Oracle 數據庫。本文檔介紹如何配置 Oracle 數據庫連接。 使用須知? 要連接到 Oracle 數據庫&#xff0c;您需要 Oracle 19c, 18c, 12c, 11g 或 10g。 Oracle 數據庫的 JDBC 驅動程序&#xff0c;您可以從 Maven 倉庫…

im即時聊天客服系統SaaS還是私有化部署:成本、安全與定制化的權衡策略

隨著即時通訊技術的不斷發展&#xff0c;IM即時聊天客服系統已經成為企業與客戶溝通、解決問題、提升用戶體驗的重要工具。在選擇IM即時聊天客服系統時&#xff0c;企業面臨一個重要決策&#xff1a;選擇SaaS&#xff08;軟件即服務&#xff09;解決方案&#xff0c;還是進行私…

mysql中in和exists的區別?

大家好&#xff0c;我是鋒哥。今天分享關于【mysql中in和exists的區別?】面試題。希望對大家有幫助&#xff1b; mysql中in和exists的區別? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 在 MySQL 中&#xff0c;IN 和 EXISTS 都用于進行子查詢&#xff0c;但它…

element-plus中table組件的使用

1、table組件的基本使用 注意&#xff1a; ①對象集合&#xff0c;要從后端查詢。 ②prop是集合中的對象的屬性名&#xff1b;label是表格表頭的名稱。 2、將性別一列的71轉為男&#xff0c;72轉為女 問題描述&#xff1a; 解決步驟&#xff1a; ①將el-table-column變成雙標簽…

Django小白級開發入門

1、Django概述 Django是一個開放源代碼的Web應用框架&#xff0c;由Python寫成。采用了MTV的框架模式&#xff0c;即模型M&#xff0c;視圖V和模版T。 Django 框架的核心組件有&#xff1a; 用于創建模型的對象關系映射為最終用戶設計較好的管理界面URL 設計設計者友好的模板…

使用 display: flex 實現動態布局:每行兩個 item,單數時最后一個占滿整行

文章目錄 使用 display: flex 實現動態布局&#xff1a;每行兩個 item&#xff0c;單數時最后一個占滿整行 &#x1f3af;一、需求分析二、實現思路三、代碼實現1. HTML 結構2. CSS 樣式關鍵點解析&#xff1a; 四、效果演示HTML 示例&#xff1a;效果&#xff1a; 五、完整代碼…

preloaded-classes裁剪

系統預加載了哪些class類&#xff1f;system/etc/preloaded-classes 修改源代碼&#xff1f; frameworks\base\config\preloaded-classes 默認位置&#xff0c;如果改了不生效&#xff0c;可能有其它模塊的mk文件指定了preloaded-classes覆蓋了framework模塊&#xff0c;例如…

華為配置篇-OSPF基礎實驗

OSPF 一、簡述二、常用命令總結三、實驗3.1 OSPF單區域3.2 OSPF多區域3.3 OSPF 的鄰接關系和 LSA 置底 一、簡述 OSPF&#xff08;開放式最短路徑優先協議&#xff09; 基本定義 全稱&#xff1a;Open Shortest Path First 類型&#xff1a;鏈路狀態路由協議&#xff08;IGP&…

Orale數據文件加錯位置,你直接rm引發的故障

數據庫可能面臨硬件故障、人為錯誤、惡意攻擊、自然災害等多種潛在風險&#xff0c;那么今天這個故障就是由于業務人員加錯數據文件的位置&#xff0c;然后直接從物理層面rm -f了&#xff0c;導致了生產的故障&#xff01; 以下是針對Oracle數據庫物理刪除數據文件后的快速修復…

ChromeDriver下載 最新版本 134.0.6998.35

平時為了下個驅動&#xff0c;到處找挺麻煩&#xff0c;收集了很多無償分享給需要的人&#xff0c;僅供學習和交流。 ChromeDriver及瀏覽器134.0.6998.35 ChromeDriver及瀏覽器133.0.6943.141 ChromeDriver 102.0.5005.61 ChromeDriver 105.0.5195.102 ChromeDriver 108.0…

QEMU源碼全解析 —— 塊設備虛擬化(2)

接前一篇文章:QEMU源碼全解析 —— 塊設備虛擬化(1) 本文內容參考: 《趣談Linux操作系統》 —— 劉超,極客時間 《QEMU/KVM源碼解析與應用》 —— 李強,機械工業出版社 特此致謝! 上一回講解了幾種虛擬化方式(全虛擬化、半虛擬化和硬件輔助虛擬化)的優缺點及其對比…

Redis——緩存穿透、擊穿、雪崩

緩存穿透 什么是緩存穿透 緩存穿透說簡單點就是大量請求的 key 根本不存在于緩存中&#xff0c;導致請求直接到了數據庫上&#xff0c;根本沒有經過緩存這一層。舉個例子&#xff1a;某個黑客故意制造我們緩存中不存在的 key 發起大量請求&#xff0c;導致大量請求落到數據庫…

DELETE/ UPDATE/ INSERT 語句會自動加鎖

在數據庫系統中&#xff0c;DELETE、UPDATE 和 INSERT 語句通常會自動加鎖&#xff0c;以確保數據的一致性和并發控制。具體的鎖類型和效果取決于數據庫的實現&#xff08;如 MySQL、PostgreSQL 等&#xff09;以及事務的隔離級別。以下是這些操作通常加鎖的行為和效果&#xf…