当前位置: 首页 > news >正文

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 容器隔离,避免污染本机系统
✅ 持久化存储数据,确保数据安全

相关文章:

Docker 部署 MongoDB 并持久化数据

Docker 部署 MongoDB 并持久化数据 在现代开发中,MongoDB 作为 NoSQL 数据库广泛应用,而 Docker 则提供了高效的容器化方案。本教程将介绍如何使用 Docker 快速部署 MongoDB,并实现数据持久化,确保数据不会因容器重启或删除而丢失…...

DeepSeek + 沉浸式翻译 打造智能翻译助手

本文详细介绍如何使用 DeepSeek API 沉浸式翻译插件打造个性化翻译助手。 一、DeepSeek API 配置 基础配置 API 基础地址:https://api.deepseek.com需要申请 API Key支持与 OpenAI SDK 兼容的调用方式 可用模型 deepseek-chat:已升级为 DeepSeek-V3&am…...

cdn取消接口缓存

添加cdn后,使用cdn加速域名访问接口 是缓存,不是最新的数据,如果使用局域网则是最新的数据,如果修改配置,确保使用cdn域名请求的接口返回不是缓存 要确保通过CDN加速域名访问接口时返回的是最新的数据,而不…...

字节跳动C++客户端开发实习生内推-抖音基础技术

智能手机爱好者和使用者,追求良好的用户体验; 具有良好的编程习惯,代码结构清晰,命名规范; 熟练掌握数据结构与算法、计算机网络、操作系统、编译原理等课程; 熟练掌握C/C/OC/Swift一种或多种语言&#xff…...

OpenHarmony子系统开发编译构建指导

OpenHarmony子系统开发编译构建指导 概述 OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能: 以部件为最小粒度拼装产品和独…...

MySQL进阶-关联查询优化

采用左外连接 下面开始 EXPLAIN 分析 EXPLAIN SELECT SQL_NO_CACHE * FROM type LEFT JOIN book ON type.card book.card; 结论:type 有All ,代表着全表扫描,效率较差 添加索引优化 ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】&#xff0…...

数据结构第六节:二叉搜索树(BST)的基本操作与实现

【本节要点】 二叉搜索树(BST)基本原理代码实现核心操作实现辅助函数测试代码完整代码 一、二叉搜索树(BST)基本原理与设计总结 注:基本原理的详细分析可以在数据结构第六节中查看,这里是简单描述。 二叉搜…...

在昇腾GPU上部署DeepSeek大模型与OpenWebUI:从零到生产的完整指南

引言 随着国产AI芯片的快速发展,昇腾(Ascend)系列GPU凭借其高性能和兼容性,逐渐成为大模型部署的重要选择。本文将以昇腾300i为例,手把手教你如何部署DeepSeek大模型,并搭配OpenWebUI构建交互式界面。无论…...

在window终端创建docker容器的问题

问题: 错误原因: PowerShell 换行符错误 PowerShell 中换行应使用反引号而非反斜杠 \,错误的换行符导致命令解析中断。 在 Windows 的 PowerShell 中运行 Docker 命令时遇到「sudo 无法识别」的问题,这是因为 Windows 系统原生不…...

掌握Kubernetes Network Policy,构建安全的容器网络

在 Kubernetes 集群中,默认情况下,所有 Pod 之间都是可以相互通信的,这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制,Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则&#xff0c…...

ReAct论文阅读笔记总结

ReAct:Synergizing Reasoning and Acting in Language Models 背景 最近的研究结果暗示了在自主系统中结合语言推理与交互决策的可能性。 一方面,经过适当Prompt的大型语言模型(LLMs)已经展示了在算术、常识和符号推理任务中通…...

Linux云计算SRE-第十七周

1. 做三个节点的redis集群。 1、编辑redis节点node0(10.0.0.100)、node1(10.0.0.110)、node2(10.0.0.120)的安装脚本 [rootnode0 ~]# vim install_redis.sh#!/bin/bash # 指定脚本解释器为bashREDIS_VERSIONredis-7.2.7 # 定义Redis的版本号PASSWORD123456 # 设置Redis的访问…...

Python在数字货币交易中的算法设计:从策略到实践

Python在数字货币交易中的算法设计:从策略到实践 随着区块链技术的发展和加密货币市场的繁荣,数字货币交易已经成为金融领域的一个重要分支。从个体投资者到量化基金,算法交易(Algorithmic Trading)正在为提高交易效率和决策质量提供强大的支撑。在这些技术应用中,Pytho…...

高纬度、跨极区导航技术

本文是何昆鹏老师所写,在此非常感谢何老师的分享。 全球导航,特别是极区导航,一直被美俄导航领域所关注。美俄本身部分国土就处于极区,很多战略军事部署与全球航线也都处于该区域,加之其战略军事任务也都强调全球覆盖…...

用AI学编程2——python学习1

一个py文件,学会所有python所有语法和特性,给出注释,给出这样的文件 Python 学习整合文件 """ Python 学习整合文件 包含 Python 的基础语法、数据结构、函数定义、面向对象编程、异常处理、文件操作、高级特性等内容 每个部…...

用数据唤醒深度好眠,时序数据库 TDengine 助力安提思脑科学研究

在智能医疗与脑科学快速发展的今天,高效的数据处理能力已成为突破创新的关键。安提思专注于睡眠监测与神经调控,基于人工智能和边缘计算,实现从生理体征监测、智能干预到效果评估的闭环。面对海量生理数据的存储与实时计算需求,安…...

Ubuntu下MySQL的安装与使用(一)

目录 用户切换 MySQL的安装 MySQL的初步使用 登录与退出 Linux和mysql中的普通用户和root用户 查看、创建与使用 简单应用 MySQL 数据库在 Linux 文件系统中的存储结构 数据库、数据库服务、数据库管理系统(宏观) 微观下的DBMS SQL语言及其分…...

步进电机软件细分算法解析与实践指南

1. 步进电机细分技术概述 步进电机是一种将电脉冲信号转换为角位移的执行机构,其基本运动单位为步距角。传统步进电机的步距角通常为 1.8(对应 200 步 / 转),但在高精度定位场景下,这种分辨率已无法满足需求。细分技术…...

pytorch retain_grad vs requires_grad

requires_grad大家都挺熟悉的,因此穿插在retain_grad的例子里进行捎带讲解就行。下面看一个代码片段: import torch# 创建一个标量 tensor,并开启梯度计算 x torch.tensor(2.0, requires_gradTrue)# 中间计算:y 依赖于 x&#x…...

RabbitMQ消息队列中间件安装部署教程(Windows)-2025最新版详细图文教程(附所需安装包)

目录 前言 一、安装Erlang环境 1、下载Erlang安装包 2、安装Erlang 3、设置环境变量 二、安装RabbitMQ环境 1、下载RabbitMQ安装包 2、安装RabbitMQ 3、设置环境变量 三、启动RabbitMQ 1、开启RabbitMQ管理插件 2、启动RabbitMQ 四、访问RabbitMQ 前言 RabbitMQ 是…...

python高校大学生家教平台的设计与开发

目录需求分析与功能规划技术栈选型数据库设计关键功能实现测试与部署持续迭代项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与功能规划 明确平台核心需求,包括用户角色划分(学生、教师、管理员…...

构建语音驱动的智能Agent:集成SenseVoice-Small与AI决策框架

构建语音驱动的智能Agent:集成SenseVoice-Small与AI决策框架 你有没有想过,对着电脑说句话,它就能帮你写代码、查资料、甚至控制智能家居?这听起来像是科幻电影里的场景,但现在,通过将强大的语音识别模型与…...

通义千问3-Reranker-0.6B部署教程:模型服务SLA保障(P95延迟<800ms)调优

通义千问3-Reranker-0.6B部署教程&#xff1a;模型服务SLA保障&#xff08;P95延迟<800ms&#xff09;调优 1. 为什么你需要关注这个模型&#xff1f; 如果你正在做搜索系统、智能客服或者文档问答&#xff0c;肯定遇到过这样的问题&#xff1a;用户输入一个问题&#xff…...

Qwen3-TTS-12Hz-1.7B-CustomVoice惊艳效果:葡萄牙语足球解说+俄语天气预报语音集

Qwen3-TTS-12Hz-1.7B-CustomVoice惊艳效果&#xff1a;葡萄牙语足球解说俄语天气预报语音集 1. 多语言语音合成的突破性进展 语音合成技术正在经历一场革命性的变革&#xff0c;而Qwen3-TTS-12Hz-1.7B-CustomVoice无疑是这场变革中的佼佼者。这个模型不仅在技术架构上实现了重…...

系统移植-STM32MP1_TF-A概述

文章目录 1 设备安全2 TF-A简介3 ARMv7和ARMv8权限等级3.1 ARMv7-A工作模式3.2 ARMv8工作模式 4 TF-A不同启动阶段4.1 bl14.2 bl24.3 bl314.4 bl324.5 bl33 5 STM32MP1中的TF-A5.1 STM32MP1_TF-A框架5.1.1 STM32MP1下的bl15.1.2 STM32MP1下的bl25.1.3 STM32MP1下的bl325.1.4 ST…...

基于MATLAB RVC与Simulink的ABB-IRB-1200运动学建模及轨迹规划实战

1. ABB-IRB-1200机械臂与MATLAB RVC工具箱初探 第一次接触ABB-IRB-1200这款机械臂时&#xff0c;我就被它精巧的设计所吸引。这款机械臂有两种型号&#xff0c;工作范围分别是700mm和900mm&#xff0c;最大有效负载分别为7kg和5kg。别看它体积小&#xff0c;在狭小空间内作业时…...

野火指南者开发板+LVGL实战:3.2寸电阻屏GUI移植全流程(附避坑指南)

野火指南者开发板LVGL实战&#xff1a;3.2寸电阻屏GUI移植全流程&#xff08;附避坑指南&#xff09; 在嵌入式开发中&#xff0c;为设备添加美观的用户界面往往能大幅提升产品体验。对于STM32开发者而言&#xff0c;野火指南者开发板搭配3.2寸电阻触摸屏是一个性价比极高的硬件…...

为什么92%的Polars新手在join时OOM?揭秘2.0新版streaming引擎的5个关键启用条件

第一章&#xff1a;Polars 2.0 大规模数据清洗技巧 面试题汇总Polars 2.0 引入了更严格的惰性执行模型、增强的字符串/时间解析能力&#xff0c;以及对空值传播行为的统一语义&#xff0c;使其在高频面试场景中成为考察候选人工程化数据处理能力的关键工具。以下为高频面试题及…...

Navicat Mac版试用期解除解决方案:3种方法实现永久试用

Navicat Mac版试用期解除解决方案&#xff1a;3种方法实现永久试用 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 问题引入&#xff1a;Navicat试用期限制的技术破解需求 对于…...

Zotero插件生态:从翻译到效率提升的进阶配置指南

1. Zotero插件生态全景&#xff1a;从翻译到全流程优化 第一次接触Zotero时&#xff0c;我和大多数人一样&#xff0c;只是把它当作一个简单的文献管理工具。直到某天深夜赶论文&#xff0c;连续手动整理了47篇参考文献后&#xff0c;手指酸痛的我突然意识到&#xff1a;这绝对…...