惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
I
InfoQ
博客园_首页
G
Google Developers Blog
爱范儿
爱范儿
Last Week in AI
Last Week in AI
量子位
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
月光博客
月光博客
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

博客园 - work hard work smart

Java 面试1 Java 常见面试问题 手撕java常用代码 WebStorm 创建react工程 构建企业级 Text-to-SQL Agent:基于 LangGraph 的智能数据查询系统设计 Harness 工程:驾驭 AI Agent 的工程化艺术 DeepAgents 多智能体架构实战:从设计模式到后端选型 Vue 自定义组件完全指南:从零构建待办事项应用 使用 LangChain + Hugging Face 构建文本向量化服务 SQLAlchemy 使用详解 Python 中使用 Elasticsearch 的完整指南 Qdrant 向量数据库使用指南 OpenEvals 快速入门:LLM 评估指南 DeepEval 快速入门:LLM 应用评估指南 LangSmith 批量评估完全指南 Qwen-Agent 入门指南:快速构建智能体应用 LangSmith 集成实战:从追踪到评估的完整指南 初识 go-zero:一款让你写后端更规范、更高效的 Go 微服务框架 RAG 中为什么需要 Rerank,以及如何使用 Rerank LangChain4j RAG 核心组件与组合方式 如何使用 Elasticsearch 进行全文检索和向量检索 MinerU Docker 部署指南 5 分钟上手:为 Cline 配置一个免费的 MCP 天气服务 Neo4j 图数据库安装与 Spring Boot 集成实战指南 LangFuse 实战指南:用 @observe 三行代码给 LLM 应用加上全链路追踪 Function Call 深度解析:让大模型从"嘴炮"到"实干"的技术革命 Spring AI 提示词模板实战:告别硬编码,实现提示词工程化管理 LangChain4j 实战指南:用 Java 轻松构建 AI 应用 Spring AI 对话短期记忆实战:让大模型拥有"记忆力" Spring AI 提示词工程实战:让大模型更懂你的意图
一行命令搞定 MongoDB 开发环境:Docker Compose 部署 + 可视...
work hard work smart · 2026-04-27 · via 博客园 - work hard work smart

一行命令搞定 MongoDB 开发环境:Docker Compose 部署 + 可视化管理

记录从编写 docker-compose.yml 到成功运行 MongoDB 与 mongo-express 的全过程,并解决国内网络下镜像拉取失败的问题

一、目标:快速拥有一套 MongoDB + 可视化管理界面

作为开发者,经常需要本地运行 MongoDB 进行测试。以往需要下载安装、配置服务、再装一个客户端工具,步骤繁琐。使用 Docker Compose,只需一个配置文件,就能同时启动 MongoDB 服务和 Web 版管理界面 mongo-express。

最终效果:

  • MongoDB 服务运行在 localhost:27017,默认账号 root/123456

  • mongo-express 管理界面访问 http://localhost:8081,登录账号 mongoexpressuser/mongoexpresspass

效果图:

image

二、编写 docker-compose.yml

在任意目录(例如 D:\docker\mongo)下创建文件 docker-compose.yml,内容如下:

services:
  mongo:
    image: mongo
    container_name: mongo
    restart: always
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
    volumes:
      - mongo_data:/data/db
  
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - "8081:8081"
    environment:
      ME_CONFIG_MONGODB_URL: "mongodb://root:123456@mongo:27017/"
      ME_CONFIG_BASICAUTH_ENABLED: "true"
      ME_CONFIG_BASICAUTH_USERNAME: "mongoexpressuser"
      ME_CONFIG_BASICAUTH_PASSWORD: "mongoexpresspass"

volumes:
  mongo_data:

这个文件定义了:

  • mongo 服务:使用官方镜像,映射端口 27017,设置 root 密码,并用卷持久化数据。

  • mongo-express 服务:连接上面的 MongoDB,提供 Web 界面,同时增加了基础认证保护。

三、启动服务 —— 遇到镜像下载问题

打开终端(PowerShell 或 CMD),进入该目录,执行:

预期行为: Docker 会自动拉取 mongo 和 mongo-express 镜像,然后创建并启动容器。

实际遇到的问题: 拉取镜像时卡住或报错,典型错误信息:

Error response from daemon: unable to fetch descriptor ... content size of zero

failed to resolve reference ... no such host

问题原因分析

Docker Hub 官方镜像仓库位于海外,国内网络连接不稳定,导致拉取超时或返回无效数据。这是国内开发者的常见痛点。

四、解决方案:配置国内镜像加速器

通过为 Docker 配置镜像加速器(registry mirror),可以让拉取请求转发到国内的镜像源,速度大幅提升。

步骤

  1. 右键系统托盘中的 Docker 图标 → Settings → Docker Engine。

  2. 在打开的 JSON 配置中,添加或修改 registry-mirrors 字段为以下可用地址:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}
  1. 点击 Apply & Restart,等待 Docker 重启完成。

以上三个加速器分别来自 DaoCloud、dockerproxy 和腾讯云,目前稳定可用。你也可以使用阿里云个人专属加速器(登录容器镜像服务获取)。

重新拉取并启动

配置加速器后,再次执行:

此时可以看到镜像拉取进度飞快,几秒钟或一两分钟即可完成(取决于网络)。随后容器成功启动。

五、验证部署

  • 查看容器状态:

    应该显示两个容器 mongo 和 mongo-express 均为 Up 状态。

  • 访问 mongo-express:
    打开浏览器,输入 http://localhost:8081,使用用户名 mongoexpressuser 密码 mongoexpresspass 登录。你将看到一个可视化的 MongoDB 管理界面,可以浏览、创建数据库和集合。

  • 测试 MongoDB 连接(可选):
    使用 docker exec -it mongo mongosh -u root -p 123456 进入 Mongo Shell,执行 show dbs

六、常见问题与维护

Q:配置加速器后仍然拉取失败?
A:可能是加速器地址失效,可以尝试更换其他地址(如阿里云加速器),或者暂时清空 registry-mirrors 使用 VPN 直连。

Q:如何停止并清理环境?
A:docker compose down 停止容器但保留数据卷;docker compose down -v 会同时删除数据卷(慎用)。

Q:如何修改 MongoDB 密码?
A:编辑 docker-compose.yml 中的 MONGO_INITDB_ROOT_PASSWORD,然后 docker compose down && docker compose up -d

七、总结

通过本文,我们:

  1. 编写了 docker-compose.yml 一键部署 MongoDB + mongo-express。

  2. 遇到了国内网络拉取镜像失败的问题。

  3. 学会了配置 Docker Desktop 的镜像加速器来解决该问题。

  4. 最终成功运行了完整的数据库开发环境。

整个过程无需手动安装 MongoDB 客户端工具,全部容器化,干净且可复现。希望这篇记录对你有帮助,欢迎留言交流!