当前位置: 首页 > news >正文

docker-compose 配置启动2个MongoDB

要将原配置扩展为启动两个独立的MongoDB容器,需要分别定义两个服务,每个服务使用不同的名称、端口、卷路径、环境变量和容器名称以避免冲突。以下是修改后的docker-compose.yml

version: '3'
services:# 第一个MongoDB服务mongo1:  # 服务名称改为mongo1image: mongocontainer_name: mongo_instance1  # 唯一容器名称restart: alwaysenvironment:MONGO_INITDB_ROOT_USERNAME: admin_user1  # 建议使用不同用户名MONGO_INITDB_ROOT_PASSWORD: secure_pass1  # 建议使用不同密码volumes:- /mnt/mongodb/data1:/data/db         # 数据目录1- /mnt/mongodb/backup1:/data/backup   # 备份目录1ports:- "27017:27017"  # 暴露到宿主机的端口(确保无冲突)command: ["--auth"]# 第二个MongoDB服务(在原mongo2基础上修改)mongo2:  image: mongocontainer_name: mongo_instance2  # 唯一容器名称restart: alwaysenvironment:MONGO_INITDB_ROOT_USERNAME: admin_user2  # 不同用户名MONGO_INITDB_ROOT_PASSWORD: secure_pass2  # 不同密码volumes:- /mnt/mongodb/data2:/data/db         # 原配置的数据目录- /mnt/mongodb/backup2:/data/backup   # 原配置的备份目录ports:- "27018:27017"  # 保持原宿主机端口27018command: ["--auth"]

关键修改说明:

  1. 服务分离

    • 创建两个独立服务 mongo1mongo2
    • 每个服务拥有唯一的container_namemongo_instance1mongo_instance2
  2. 避免端口冲突

    • mongo1 使用宿主机端口 27017 → 容器端口 27017
    • mongo2 保持原宿主机端口 27018 → 容器端口 27017
  3. 独立存储卷

    • 为每个容器分配独立的数据目录(/mnt/mongodb/data1/data2
    • 独立备份目录(/mnt/mongodb/backup1/backup2
  4. 安全隔离

    • 为每个实例设置不同的用户名密码(避免权限交叉)

启动命令:

docker-compose up -d  # 同时启动两个容器

连接示例:

  • 连接第一个MongoDB:
    mongodb://admin_user1:secure_pass1@localhost:27017
  • 连接第二个MongoDB:
    mongodb://admin_user2:secure_pass2@localhost:27018

⚠️ 重要:确保宿主机目录(如/mnt/mongodb/data1)已提前创建且权限正确(chmod 757),否则容器可能无法启动。

http://www.xdnf.cn/news/1127557.html

相关文章:

  • 【Docker基础】Dockerfile构建与运行流程完全指南:从原理到实践优化
  • PostgreSQL 超详细安装与使用教程:从入门到实战
  • Axios 和Express 区别对比
  • 使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
  • Linux系统调优和工具
  • 理解 HTTP POST 请求中的 json 和 data 参数
  • 【目标追踪】MUTR3D: A Multi-camera Tracking Framework via 3D-to-2D Queries
  • 快速了解 HTTPS
  • 【BUG处理】构建APK时遇到错误:‘flutter‘ 命令未被识别。这通常表示您的系统中未安装Flutter SDK或环境变量配置不正确。
  • 【亲测有效】ubuntu20.04服务器新建用户+vnc配置教程
  • 基于按键开源MultiButton框架深入理解代码框架(二)(指针的深入理解与应用)
  • 【橘子分布式】Thrift RPC(编程篇)
  • OMPL安装问题:CMake报错找不到ompl依赖
  • Linux探秘坊-------14.信号
  • Axios 完整功能介绍和完整示例演示
  • OSPFv3中LSA参数
  • 【Luogu】每日一题——Day3. P6392 中意 (数学 取模)
  • 【深度学习优化算法】06:动量法
  • Sentinel热点参数限流完整示例实现
  • 高温车间(60℃+)如何选高温/宽温边缘网关设备?
  • 如何把手机ip地址切换到外省
  • Datawhale 25年7月组队学习coze-ai-assistant Task1学习笔记:动手实践第一个AI Agent—英伦生活口语陪练精灵
  • 学习C++、QT---26(QT中实现记事本项目实现文件路径的提示、现在我们来学习一下C++类模板、记事本的行高亮的操作的讲解)
  • etcd自动压缩清理
  • QT——QComboBox组合框控件
  • Flink实战项目——城市交通实时监控平台
  • 函数柯里化详解
  • Luban配置教程
  • 如何在simulink中怎么获取足端轨迹代码解释?
  • 【卡尔曼滤波第六期】集合变换卡尔曼滤波 ETKF