概述
做后端开发或者全栈项目时,MongoDB 是绕不开的 NoSQL 数据库。但直接在本地装 MongoDB 往往很痛苦:版本冲突、环境变量配错、卸载不干净导致端口被占……
如果你还没用过 Docker,或者一直想找一个“即开即用、用完即走”的数据库环境,这篇教程就是为你准备的。我们将通过 docker-compose 在 3 分钟内搭建一个带有数据持久化的 MongoDB 开发环境,并教你如何用可视化工具连接它。
准备工作
在开始之前,请确保你的电脑已安装以下工具:
- Docker Desktop(Windows/Mac)或 Docker Engine + Compose(Linux)。
- 验证方法:在终端输入
docker --version和docker compose version。
- 验证方法:在终端输入
- MongoDB Compass(可选):MongoDB 官方提供的免费可视化管理工具,方便查看数据。
- 文本编辑器:VS Code 或任何能编辑 YAML 文件的工具。
步骤:一键启动 MongoDB
第一步:创建项目目录与配置文件
在你的项目根目录下创建一个名为 dev-env 的文件夹,并在其中新建文件 docker-compose.yml。
mkdir dev-env && cd dev-env
touch docker-compose.yml
打开 docker-compose.yml,写入以下内容:
version: '3.8'
services:
mongodb:
image: mongo:7.0 # 使用最新的稳定版 MongoDB 7.0
container_name: my-mongo-dev
restart: always
ports:
- "27017:27017" # 宿主机端口:容器端口
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password123 # 建议修改为强密码
MONGO_INITDB_DATABASE: myapp # 默认创建的数据库名
volumes:
- ./mongo-data:/data/db # 数据持久化,防止容器删除后数据丢失
- ./mongo-config:/data/configdb
关键点解析:
image: mongo:7.0:指定镜像版本,保持版本一致性。ports: "27017:27017":将容器的 27017 端口映射到本机,这样你可以像连接本地数据库一样连接它。volumes:这是最重要的部分。./mongo-data会将容器内的数据目录挂载到本地文件夹。即使你删掉了容器,数据依然保存在你的硬盘上。
第二步:启动服务
在 docker-compose.yml 所在的目录下,打开终端,运行以下命令:
docker compose up -d
up:启动服务。-d:后台运行(detach),不会阻塞终端。
启动成功后,你会看到类似 Creating my-mongo-dev ... done 的输出。
第三步:检查运行状态
确认容器是否正在运行:
docker ps
你应该能看到 my-mongo-dev 容器处于 Up 状态,且端口映射正确。
如果想看启动日志,确认没有报错:
docker logs my-mongo-dev
当看到 waiting for connections on port 27017 时,说明服务已就绪。
验证:如何连接?
现在你有两种方式连接这个数据库。
方式一:使用 MongoDB Compass(推荐新手)
- 下载并安装 MongoDB Compass。
- 打开 Compass,在连接字符串栏输入:
mongodb://admin:password123@localhost:27017/myapp?authSource=adminadmin/password123对应docker-compose.yml中的用户名密码。localhost:27017是地址。myapp是默认库。
- 点击 Connect。如果成功,你会看到左侧列出了
myapp数据库,右侧显示为空集合(Collection)。
方式二:使用命令行 CLI
如果你已经安装了 MongoDB Shell (mongosh),可以直接测试:
mongosh "mongodb://admin:password123@localhost:27017/myapp?authSource=admin"
进入交互式界面后,输入:
db.test.insertOne({ name: "Docker Test", status: "Success" })
db.test.find()
如果能看到刚才插入的数据,说明一切正常!
常见问题
Q1: 修改了 docker-compose.yml 中的密码,连接失败怎么办?
A: 因为使用了数据卷 (volumes),MongoDB 会复用旧的数据文件,旧密码可能仍然有效。如果想彻底重置,可以停止容器并删除挂载的本地数据文件夹:
docker compose down
rm -rf ./mongo-data/*
docker compose up -d
注意:这会清空所有历史数据,仅限开发环境使用。
Q2: 为什么外网连不上? A: 默认情况下,Docker 只监听 localhost。如果是云服务器,请确保防火墙放行了 27017 端口,并且不要在生产环境中将 MongoDB 直接暴露给公网,务必使用 SSH 隧道或内网穿透。
Q3: 如何停止并删除环境? A:
docker compose down
这会停止并删除容器,但不会删除本地 mongo-data 文件夹中的数据。如果你想连数据也删掉,加上 -v 参数:
docker compose down -v
结语
用 Docker 管理开发环境,最大的好处就是“纯净”和“可复制”。不管换哪台电脑,只要拉取代码和配置,3 分钟就能恢复一模一样的数据库环境。
下次如果你的 Node.js 或 Python 项目需要 MongoDB,别再手动下载安装包了,试试这一招吧。
教程生成时间:2026-07-25 | 作者:NavBox AI Assistant