Skip to main content

Docker 部署 MongoDB 数据库

MongoDB 是一种开源的 NoSQL 数据库系统,它提供了高性能、可扩展性和高可用性。它与传统的关系型数据库系统不同,MongoDB 使用了文档存储模型,将数据存储在 JSON-like 的文档中。这种文档存储模型使得 MongoDB 很容易存储和查询复杂的数据结构,并提供了较高的查询性能。

MongoDB 的主要功能包括:

  • 集合:类似于关系型数据库中的表,集合是存储文档的逻辑容器。
  • 文档:类似于关系型数据库中的行,文档是由字段 - 值对组成的 JSON 文档。
  • 索引:MongoDB 支持多种类型的索引,用于加快查询速度。
  • 自动分片:MongoDB 支持自动分片,可以将数据水平地分布在多个服务器上,以提高性能和可扩展性。

MongoDB 支持多种编程语言,包括 C++、C#、Java、Node.js、Perl、PHP、Python 和 Ruby。它可以在 Windows、Linux 和 MacOS 等操作系统上运行。

DockerHub: mongo | DockerHub

Docker-Compose

stack.yml
version: "3.1"

services:
mongo:
image: mongo:6.0
container_name: "some-mongo"
restart: always
command:
- --serviceExecutor adaptive
- --wiredTigerCacheSizeGB 1.5
- --config /etc/mongo/mongod.conf
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
volumes:
- ./mongo-data:/data/db
- /etc/localtime:/etc/localtime
ports:
- "27017:27017"

mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

运行 docker-compose -f stack.yml up 启动服务,访问 http://localhost:8080 或者 http://host-ip:8080 进入管理页面。

常用命令:

  • 启动: docker-compose -f stack.yml up
  • 后台启动: docker-compose -f stack.yml up -d
  • 检查状态: docker-compose ps
  • 停止: docker-compose -f stack.yml stop
  • 停止并删除: docker-compose -f stack.yml down
  • 查看日志: docker logs some-mongo

Docker

$ docker run -itd --name mongodb -p 27017:27017 -v /my/own/datadir:/data/db --restart=always -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=my-secret-pw mongo:latest

  • some-mongo 容器名称
  • my-secret-pw 设置的 root 用户的密码
  • -p 是指定 宿主端口:容器内服务端口,默认 27017
  • -v 设置数据库文件的映射,把宿主机上的目录 /my/own/datadir 与容器内的 /data/db 作关联关系