所有人。我有一个奇怪的问题(谁没有呢?)
我有这个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应用程序等待副本集准备就绪,有什么建议吗?
发布于 2020-08-24 17:26:48
应用程序确实等待了30秒。您可以通过调整serverSelectionTimeoutMS URI选项或通过特定于语言的方法来增加超时。
https://stackoverflow.com/questions/63539943
复制相似问题