使用Docker部署MongoDB和Mongo Express的完整指南
2025-07-08 20:27:45作者:瞿蔚英Wynne
前言
在现代应用开发中,NoSQL数据库MongoDB因其灵活的数据模型和强大的查询能力而广受欢迎。本文将详细介绍如何使用Docker容器技术快速部署MongoDB数据库及其Web管理工具Mongo Express。
准备工作
在开始之前,请确保您已经具备以下条件:
- 一台运行Debian或Ubuntu操作系统的服务器
- 已安装Docker和Docker Compose
- 基本的Linux命令行操作知识
环境检查
首先,我们需要验证Docker环境是否准备就绪:
# 检查Docker版本
sudo docker --version
# 检查Docker Compose版本
docker-compose version
正常情况下,您应该看到类似以下的输出(版本号可能有所不同):
Docker version 20.10.10, build b485636
Docker Compose version v2.1.0
配置Docker Compose文件
我们将使用Docker Compose来定义和管理我们的服务。创建一个名为docker-compose.yaml的文件,内容如下:
version: '3'
services:
mongodb:
container_name: mongodb
image: mongo:4.4.6
environment:
- MONGO_INITDB_DATABASE=mongodb
- MONGO_INITDB_ROOT_USERNAME=mongouser
- MONGO_INITDB_ROOT_PASSWORD=mongopasswd
ports:
- '27017:27017'
volumes:
- mongodb_volume:/data/db
networks:
- mongo_backend_network
mongo-express:
container_name: mongo-express
image: mongo-express:1.0.0-alpha.4
depends_on:
- mongodb
environment:
- ME_CONFIG_MONGODB_SERVER=mongodb
- ME_CONFIG_MONGODB_ADMINUSERNAME=mongouser
- ME_CONFIG_MONGODB_ADMINPASSWORD=mongopasswd
- ME_CONFIG_BASICAUTH_USERNAME=adminuser
- ME_CONFIG_BASICAUTH_PASSWORD=adminpasswd
ports:
- '8081:8081'
volumes:
- mongo_express_volume:/data/db
networks:
- mongo_backend_network
volumes:
mongodb_volume:
mongo_express_volume:
networks:
mongo_backend_network:
driver: bridge
配置文件解析
-
MongoDB服务配置:
- 使用官方mongo:4.4.6镜像
- 设置了初始数据库和root用户凭证
- 将容器内的27017端口映射到主机
- 使用卷持久化数据
-
Mongo Express服务配置:
- 使用mongo-express:1.0.0-alpha.4镜像
- 配置了MongoDB连接参数
- 设置了Web界面登录凭证
- 将8081端口映射到主机
-
网络配置:
- 创建了一个桥接网络,使两个服务能够相互通信
启动服务
执行以下命令启动服务:
# 启动MongoDB
docker-compose up -d mongodb
# 启动Mongo Express
docker-compose up -d mongo-express
-d参数表示在后台运行服务。
验证服务状态
检查容器运行状态:
docker ps -a
正常输出应显示两个服务都处于"Up"状态:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64eea9ca7a0f mongo:4.4.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp mongodb
8c525825faf6 mongo-express:1.0.0-alpha.4 "tini -- /docker-ent…" 2 minutes ago Up 2 minutes 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp mongo-express
查看日志
检查服务日志有助于排查问题:
# 查看MongoDB日志
docker logs mongodb
# 查看Mongo Express日志
docker logs mongo-express
访问Mongo Express
在浏览器中访问http://<您的服务器IP>:8081,使用以下凭证登录:
用户名: adminuser
密码: adminpasswd
登录后,您可以:
- 创建新数据库
- 管理集合(Collection)
- 执行文档(Document)的CRUD操作
- 运行查询和索引管理
安全注意事项
- 修改默认凭证:在生产环境中,务必修改默认的用户名和密码
- 限制访问:考虑使用防火墙限制对8081端口的访问
- 启用TLS:对于生产环境,建议配置TLS加密连接
服务停止与清理
当不再需要这些服务时,可以执行以下命令进行清理:
docker-compose down
此命令会停止并移除所有相关容器,但会保留数据卷以便下次使用。如需完全清理,可添加-v参数:
docker-compose down -v
常见问题解答
Q: 如何备份MongoDB数据?
A: 可以使用mongodump命令或直接备份数据卷。
Q: 如何升级MongoDB版本? A: 修改docker-compose.yaml中的镜像版本,然后重新部署。
Q: 连接失败怎么办? A: 检查容器日志,确认网络配置和凭证是否正确。
总结
通过Docker部署MongoDB和Mongo Express是一种快速、高效的方案,特别适合开发和测试环境。本文详细介绍了从环境准备到服务部署的完整流程,希望能帮助您快速搭建MongoDB开发环境。
登录后查看全文
热门项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0439
源启盛夏_AtomGit暑期开发者成长计划「源启盛夏」暑期校园开发者成长计划旨在激活校园开源力量,通过积分激励、认证扶持、资源倾斜等形式,引导高校组织和开发者完成「入驻 — 建项目 — 做贡献 — 获认证 — 得资源」的完整闭环。无论你是想带领社团入驻平台的组织者,还是希望用代码贡献证明自己的开发者,都能在这里找到属于你的成长路径。Markdown00
jiuwenswarmJiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0753
Hy3Hy3 是由腾讯混元团队研发的快慢思考融合的混合专家模型,总参数量 295B,激活参数 21B,MTP 层参数 3.8B。4 月底发布 Hy3 Preview 后,我们在 50 多个业务中获得了广泛的反馈,修复了各种体验问题,进一步提升了后训练的质量和规模。今天,我们发布 Hy3。它展现出显著强于同尺寸并比肩旗舰(参数规模往往是 Hy3 的 2~5 倍)开源模型的智能水平,显著提升了在各类产品和生产力任务中的实用价值。Python00
AscendNPU-IRAscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优C++0306
PPTistPowerPoint-ist(/'pauəpɔintist/),一个基于 Web 的在线演示文稿(幻灯片)应用,还原了大部分 Office PowerPoint 常用功能。可以在 Web 浏览器中编辑/演示幻灯片,支持AIPPT。商用请遵守AGPL-3协议或购买授权。Vue00
项目优选
收起
暂无描述
Markdown
824
5.46 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
492
513
deepin linux kernel
C
32
16
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
961
2.26 K
Ascend Extension for PyTorch
Python
796
1.12 K
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
776
1.56 K
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.2 K
1.24 K
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
446
306
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
2.86 K
753
昇腾LLM分布式训练框架
Python
192
266