我花了一整天的时间试图弄清楚如何将我的独立mongod转换为副本集,并且失败了。这就是我在不复制的情况下这样做的方式。
docker-compose.yaml
volumes:
mongo.data:
services:
mongo:
image: ${COMPOSE_PROJECT_NAME}/mongo
container_name: ${COMPOSE_PROJECT_NAME}.mongo.docker
restart: unless-stopped
build:
context: .
dockerfile: ./mongo.Dockerfile
env_file: envs/mongo.env
volumes:
- mongo.data:/data/db
ports:
- 127.0.0.1:${MONGO_PORT}:${MONGO_PORT}
networks:
- network
networks:
network:
driver: bridge
Mongo.dockerfile
FROM mongo:6.0
ENV MONGO_PORT=27017
EXPOSE $MONGO_PORT
HEALTHCHECK CMD echo 'db.runCommand("ping").ok' | mongosh 127.0.0.1:$MONGO_PORT/test --quiet || exit 1
ENTRYPOINT docker-entrypoint.sh mongod --port $MONGO_PORT
然后我正在使用这样的URL连接:mongodb://${env('MONGO_USERNAME')}:${env('MONGO_PASSWORD')}@${env('MONGO_HOST')}:${env('MONGO_PORT')}/${env('MONGO_DATABASE')}?authSource=admin
docker-compose.yaml:
services:
mongo:
image: mongo
command: ['--replSet', 'rs0', '--bind_ip_all', '--port', '27017']
ports:
- 27017:27017
extra_hosts:
- 'host.docker.internal:host-gateway'
healthcheck:
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'host.docker.internal:27017'}]}) }" | mongosh --port 27017 --quiet
interval: 5s
timeout: 30s
start_period: 0s
start_interval: 1s
retries: 30
volumes:
- 'mongo_data:/data/db'
- 'mongo_config:/data/configdb'
volumes:
mongo_data:
mongo_config:
.env:
MONGODB_URI="mongodb://localhost:27017/db-name?replicaSet=rs0"
和 - >
docker-compose up --wait
这些设置正在我的Nestjs Project
MoreInfo =>链接:Medium