【问题标题】:Docker: Wait for the Mongodb ReplicaSetDocker:等待 Mongodb ReplicaSet
【发布时间】:2020-08-22 18:50:54
【问题描述】:

每个人。我有一个奇怪的问题(谁没有?)

我有这个 docker-compose 文件:

version: '3.4'

services:
  ludustack-web:
    container_name: ludustack-web
    image: ${DOCKER_REGISTRY-}ludustack-web
    build:
      context: .
      dockerfile: LuduStack.Web/Dockerfile
    networks:
      - ludustack-network
    ports:
      - '80:80'
      - '443:443'
    depends_on:
      - 'ludustack-db'
  ludustack-db:
      container_name: ludustack-db
      command: mongod --auth
      image: mongo:latest
      hostname: mongodb
      networks:
        - ludustack-network
      ports:
        - '27017:27017'
      env_file:
        - .env
      environment:
        - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
        - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
        - MONGO_INITDB_DATABASE=${MONGO_INITDB_DATABASE}
        - MONGO_REPLICA_SET_NAME=${MONGO_REPLICA_SET_NAME}
      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: 60s
        start_period: 60s
      command: ["--replSet", "${MONGO_REPLICA_SET_NAME}", "--bind_ip_all"]
networks:
  ludustack-network:
    driver: bridge

问题是 web 应用程序只等待 mongodb 容器准备好,而不是副本集本身。因此,当应用程序启动时,它会因为副本集尚未准备好而崩溃。崩溃后,它会记录副本集继续其工作:

关于如何让 Web 应用程序等待副本集准备好的任何提示?

【问题讨论】:

    标签: mongodb asp.net-core docker-compose replicaset


    【解决方案1】:

    应用程序确实等待了 30 秒。您可以通过调整 serverSelectionTimeoutMS URI 选项或通过特定语言的方式来增加超时。

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2019-10-27
      • 2021-06-24
      • 1970-01-01
      • 2018-02-03
      • 2021-04-24
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多