Files
compose-anything/src/mongodb-replicaset-single/README.zh.md
2025-10-22 10:05:17 +08:00

2.3 KiB
Raw Blame History

MongoDB 单节点副本集

English | 中文

此服务用于搭建一个单节点 MongoDB 副本集,特别适合开发和测试环境。

前提条件

  1. 为副本集生成一个密钥文件:

    openssl rand -base64 756 > ./secrets/rs0.key
    

    在 Windows 上,您可以使用 Git Bash 或 WSL或从 MongoDB 文档 下载密钥文件。

初始化

  1. 启动服务:

    docker compose up -d
    

    这些服务将通过 mongo-init init 容器自动初始化副本集。该容器会:

    • 等待 MongoDB 节点就绪
    • 连接到该节点
    • 初始化单节点副本集
    • 通过容器网络进行通信
  2. 验证副本集状态:

    docker exec -it mongodb-replicaset-single-mongo1-1 mongosh -u root -p password --authenticationDatabase admin --eval "rs.status()"
    

服务

  • mongo1: 副本集的唯一成员。

配置

  • TZ: 容器的时区,默认为 UTC
  • MONGO_VERSION: MongoDB 镜像的版本,默认为 8.0.13
  • MONGO_INITDB_ROOT_USERNAME: 数据库的 root 用户名,默认为 root
  • MONGO_INITDB_ROOT_PASSWORD: 数据库的 root 密码,默认为 password
  • MONGO_INITDB_DATABASE: 要创建的初始数据库,默认为 admin
  • MONGO_REPLICA_SET_NAME: 副本集的名称,默认为 rs0
  • MONGO_PORT_OVERRIDE_1: MongoDB 节点的主机端口,默认为 27017
  • MONGO_HOST: MongoDB 节点的主机名,默认为 mongo1

  • mongo_data: 用于 MongoDB 数据持久化的命名卷。
  • secrets/rs0.key: 副本集成员身份验证的密钥文件。

安全性

副本集密钥文件以只读方式挂载,并在容器内复制到 /tmp,权限为 400。这种方法确保跨平台兼容性Windows/Linux/macOS同时保持安全要求。密钥文件不会在主机系统上被修改。

使用单节点副本集

您可以使用任何 MongoDB 客户端连接到 MongoDB 副本集:

mongosh "mongodb://root:password@localhost:27017/admin?authSource=admin&replicaSet=rs0"

或使用 Python 的 PyMongo

from pymongo import MongoClient

client = MongoClient("mongodb://root:password@localhost:27017/admin?authSource=admin&replicaSet=rs0")
db = client.admin
print(db.command("ping"))