首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用docker_compose.yml创建一个节点的MongoDB副本集并进行初始化

如何使用docker_compose.yml创建一个节点的MongoDB副本集并进行初始化
EN

Stack Overflow用户
提问于 2021-05-28 08:01:12
回答 1查看 167关注 0票数 0

我正在尝试使用docker compose与MongoDB和mongo-express创建一个MongoDB集群。我可以很好地创建集群,但我需要一个单节点副本集,以便为我的应用程序启用更改流。目标是让docker compose在运行集群后自动创建副本集,而不需要进入mongo shell。

我一直在努力寻找一个可行的例子。我找到的最好的是here,但它不适合我。mongo容器启动失败。

这是我的docker_compose.yml文件:

代码语言:javascript
复制
version: "3"

services:

  mongodb:
    image: mongo
    container_name: mongodb
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=rootuser
      - MONGO_INITDB_ROOT_PASSWORD=rootpass
    volumes:
      - ./.docker/mongodb/mongod.conf:/etc/mongod.conf
      - ./.docker/mongodb/initdb.d/:/docker-entrypoint-initdb.d/
      - ./.docker/mongodb/data/db/:/data/db/
      - ./.docker/mongodb/data/log/:/var/log/mongodb/
    healthcheck:
        test: test $$(echo "rs.initiate().ok || rs.status().ok" | mongo -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet) -eq 1
        interval: 10s
        start_period: 30s
    command: ["/usr/bin/mongod -f", "/etc/mongod.conf", "--replSet", "rs0", "--bind_ip_all"]

  mongo-express:
    image: mongo-express
    container_name: mongo-express
    ports:
      - 8081:8081
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=rootuser
      - ME_CONFIG_MONGODB_ADMINPASSWORD=rootpass
      - ME_CONFIG_MONGODB_SERVER=mongodb

networks:
  default:
    name: mongo-express-network

volumes:
  mongodb-data:
    driver: local

根据上面链接的帖子,魔力应该在command中,但它就是不起作用,我已经尝试过了。如果我去掉它,我得到了一个有效的mongo和mongo-express集群。但没有副本集。

顺便说一下,如果我进入shell并运行:

代码语言:javascript
复制
# mongod -f /etc/mongod.conf --replSet rs0 --bind_ip_all
Error opening config file: Is a directory
try 'mongod --help' for more information
#

mongod.conf是否位于其他位置?

任何帮助这项工作,将非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-05-28 10:07:30

代码语言:javascript
复制
mkdir initdb.d 
echo 'rs.initiate()' |tee initdb.d/rs.js
docker run -itv `pwd`/initdb.d:/docker-entrypoint-initdb.d/:ro -p 27017:27017 mongo --replSet myrs --bind_ip_all

是不是mongod.conf在别的地方?

图像上没有,所以如果你创建了它,它就会在你放置它的任何地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67731307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档