Docker 卷实现 MongoDB 数据持久化:从零搭建 Node.js + MongoDB 演示环境
引言默认情况下MongoDB 容器重启或重建后所有数据库数据都会丢失。核心目标是让数据库数据保留在宿主机不受容器生命周期影响。本节课将基于一个简单的 Node.js MongoDB 应用实操演示如何使用 Docker 卷Volume实现数据持久化。核心内容Node.js MongoDB 演示环境搭建环境组成演示使用 Node.js MongoDB Mongo Express。MongoDB 提供数据库服务Mongo Express 提供可视化 Web 管理界面全部通过 Docker Compose 编排启动。应用启动步骤# 进入应用目录 cd app # 安装依赖 npm install # 启动 Node 应用监听 3000 端口 node server.js # 输出确认app listening on port 3000!数据库准备在 Mongo Express 中创建自定义数据库并创建 users 集合。Node 应用通过环境变量匹配数据库和集合名称。Docker Compose 配置 Docker 命名卷核心配置步骤在 Docker Compose 根层级定义全局卷指定驱动为 local本地存储由 Docker 管理。在 MongoDB 服务中将宿主机命名卷绑定到容器内 MongoDB 默认数据存储路径。完整配置示例version: 3 services: mongodb: image: mongo ports: - 27017:27017 environment: - MONGO_INITDB_ROOT_USERNAMEadmin - MONGO_INITDB_ROOT_PASSWORDpassword volumes: - mongo-data:/data/db mongo-express: image: mongo-express ports: - 8081:8081 restart: always environment: - ME_CONFIG_MONGODB_ADMINUSERNAMEadmin - ME_CONFIG_MONGODB_ADMINPASSWORDpassword - ME_CONFIG_MONGODB_SERVERmongodb volumes: mongo-data: driver: local容器内路径说明容器内的绑定路径必须匹配数据库官方默认存储路径否则无法实现持久化。MongoDB 默认路径为/data/dbMySQL、PostgreSQL 等其他数据库都有各自的默认数据路径需要查询官方文档确认。Docker 卷工作原理容器内/data/db目录的所有数据会同步复制到宿主机的 Docker 卷mongo-data中。容器删除重建后Docker 会自动将宿主机卷mongo-data中的数据重新同步到新容器的/data/db目录实现数据保留。宿主机层与容器层的关系宿主机层mongo-data卷持久存储所有数据库文件。容器层/data/db目录启动时从宿主机卷同步数据修改实时反向同步回宿主机。Docker 卷数据持久化验证验证流程修改应用数据确认数据写入数据库。执行docker compose down删除所有容器。执行docker compose up重新创建全新容器。打开 Mongo Express 查看原数据库、集合、数据全部保留验证持久化生效。不同操作系统的 Docker 卷存储路径操作系统默认存储路径WindowsC:\ProgramData\docker\volumesLinux/var/lib/docker/volumesMac/var/lib/docker/volumesDocker for Mac 需要特殊方式访问每个命名卷都拥有独立的唯一哈希目录数据存储在卷目录的/_data路径下。Docker Compose 创建的命名卷命名规则{项目名}_{自定义卷名}前缀会自动添加项目名称。Mac 访问 Docker 卷的特殊方法Docker for Mac 将 Docker 运行在虚拟机中宿主机默认无/var/lib/docker目录需要执行命令进入虚拟机 Shell 查看bashdocker run -it --privileged --pidhost debian nsenter -t 1 -m -u -n -i sh命名卷 vs 匿名卷类型说明命名卷用户自定义明确名称方便引用和管理生产环境推荐使用匿名卷没有用户定义名称Docker 自动生成随机唯一 ID 作为名称功能和使用方式与命名卷完全一致总结本节课通过 Node.js MongoDB 演示环境系统讲解了 Docker 卷实现数据持久化的完整流程背景痛点MongoDB 容器默认不持久化数据重启后数据全部丢失。解决方案在 Docker Compose 中定义命名卷volumes根层级绑定到 MongoDB 容器内的/data/db路径。工作原理容器内/data/db与宿主机命名卷双向同步容器删除后数据仍保留在宿主机重建后自动恢复。验证方法写入数据 → 删除容器 → 重建容器 → 数据完整保留。存储位置Windows 为C:\ProgramData\docker\volumesLinux/Mac 为/var/lib/docker/volumesMac 需要进入虚拟机访问。

相关新闻

C++从零构建3D沙盒游戏核心框架:OpenGL渲染与区块管理实战

C++从零构建3D沙盒游戏核心框架:OpenGL渲染与区块管理实战

1. 项目缘起:从“复制”到“理解”的游戏开发之旅最近在社区里,看到不少朋友在搜索“我的世界 免费代码”、“迷你世界 可复制代码”这样的关键词,尤其是带着“C”这个标签。我完全理解这种心情——当你对《我的世界》(Minecraft&…

2026/9/1 20:32:43 阅读更多 →
Python反斜杠全解析:转义字符、路径处理与正则表达式避坑指南

Python反斜杠全解析:转义字符、路径处理与正则表达式避坑指南

1. 从一次“诡异”的路径错误说起那天,一个刚学Python没多久的朋友发来一段代码截图,问我为什么他的程序死活打不开文件。代码很简单,就是想在Windows上读取一个叫data\test.txt的文件。他写的路径是"C:\Users\name\data\test.txt"…

2026/9/1 0:23:03 阅读更多 →
Python开发中那些容易忽略的代码规范

Python开发中那些容易忽略的代码规范

你最后一次因为代码规范被同事吐槽,是什么时候?不是因为缩进用了四个空格还是两个空格,也不是因为变量命名用了拼音,而是那些看起来无关紧要、实际上能引爆生产事故的隐性规则。Python 的 PEP 8 只是入门,真正容易被忽…

2026/8/23 23:46:47 阅读更多 →

最新新闻

基于Matlab/Simulink的异步电机直接转矩控制仿真实现与解析

基于Matlab/Simulink的异步电机直接转矩控制仿真实现与解析

简介:本资源聚焦异步电动机直接转矩控制(DTC)核心原理与三相交流调速系统建模,面向本科及硕士阶段自动化、电气工程等专业的教学科研与课程设计需求,助力读者深入理解非线性、强耦合电机系统的实时控制策略与仿真验证方…

2026/9/3 9:30:53 阅读更多 →
AI时代网络安全学习新路径:7天从零到实战的免费指南

AI时代网络安全学习新路径:7天从零到实战的免费指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 9:30:53 阅读更多 →
Java进销存ERP骨架:领域驱动的业务闭环实现

Java进销存ERP骨架:领域驱动的业务闭环实现

简介:这是一套面向Java初学者、毕业设计学生及中小型企业管理者的技术实践资源,提供完整的进销存ERP系统源码,解决企业采购、销售、库存与财务一体化管理难题。压缩包共2000个文件,含251个Java核心业务类、260个JavaScript前端交互…

2026/9/3 9:30:53 阅读更多 →
基于PyQt与Python构建金融计量分析桌面应用:分位数回归与QVAR模型实践

基于PyQt与Python构建金融计量分析桌面应用:分位数回归与QVAR模型实践

简介:本资源是一套面向计量经济学研究者、高校师生及数据分析工程师的分位数回归分析工具系统,基于Python与PyQt5实现,聚焦非线性因果推断与异质性动态响应建模。系统完整集成分位数Granger因果检验(Sup-Wald统计量计算&#xff0…

2026/9/3 9:30:53 阅读更多 →
Photoshop 2026 v27.10.0.26 x64 AI辅助编辑实战指南

Photoshop 2026 v27.10.0.26 x64 AI辅助编辑实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 9:30:53 阅读更多 →
无人机影像转VOC格式数据集构建方法论

无人机影像转VOC格式数据集构建方法论

简介:VOC无人机UAV数据集是面向计算机视觉研究者与深度学习工程师的专用目标检测资源,聚焦旋翼无人机在复杂环境下的识别与定位任务,适用于YOLO、Faster R-CNN等模型训练及空中交通管理、安防监控等实际场景开发。压缩包共4913个文件&#xf…

2026/9/3 9:29:52 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →