work hard work smart

专注于AI+Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一行命令搞定 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,内容如下:

yaml
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),进入该目录,执行:

bash
docker compose up -d

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

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

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

text
failed to resolve reference ... no such host

问题原因分析

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

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

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

步骤

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

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

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

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

重新拉取并启动

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

bash
docker compose up -d

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

五、验证部署

  • 查看容器状态:

    bash
    docker compose ps

    应该显示两个容器 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 客户端工具,全部容器化,干净且可复现。希望这篇记录对你有帮助,欢迎留言交流!