I'm running a mongodb replicaset localy the containers are up the config is okay but when I try to connect with this connection string:"mongosh mongodb://appuser:apppassword@mongo1:27017, mongo2:27017, mongo3:27017/appdb?replicaSet=my-mongo-set" I'malwayse getting this error "MongoServerSelectionError: Server selection timed out after 2000 ms"
docker-compose.yml:
`version: '3'
services:
mongo1:
hostname: mongo1
image: mongo:latest
expose:
- 27017
ports:
- 30001:27017
restart: always
command: mongod --replSet my-mongo-set --bind_ip_all
mongo2:
hostname: mongo2
image: mongo:latest
expose:
- 27017
ports:
- 30002:27017
restart: always
command: mongod --replSet my-mongo-set --bind_ip_all
mongo3:
hostname: mongo3
image: mongo:latest
expose:
- 27017
ports:
- 30003:27017
restart: always
command: mongod --replSet my-mongo-set --bind_ip_all
mongoinit:
image: mongo
restart: "no"
depends_on:
- mongo1
- mongo2
- mongo3
volumes:
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
command: mongod
adminmongo:
image: mrvautin/adminmongo:latest
ports:
- "8081:1234"
environment:
- AM_CONNECT_URI=mongodb://admin:adminpassword@mongo1:27017, mongo2:27017, mongo3:27017/?replicaSet=my-mongo-set&authSource=admin
- HOST=0.0.0.0
depends_on:
- mongo1
- mongo2
- mongo3
volumes:
mongo1-data:
mongo2-data:
mongo3-data:
`
mongo-init.js :
// Connect to the admin database
var adminDb = db.getSiblingDB("admin");
// Replica set configuration
var config = {
"_id": "my-mongo-set",
"members": [
{ "_id": 0, "host": "mongo1:27017" },
{ "_id": 1, "host": "mongo2:27017" },
{ "_id": 2, "host": "mongo3:27017" }
]
};
// Initialize replica set
rs.initiate(config);
// Create admin user
adminDb.createUser({
user: "admin",
pwd: "adminpassword",
roles: [{ role: "root", db: "admin" }]
});
// Connect to the appdb database
var appDb = db.getSiblingDB("appdb");
// Create app user
appDb.createUser({
user: "appuser",
pwd: "apppassword",
roles: [{ role: "readWrite", db: "appdb" }]
});
Note: I can vonnect using mongodbamin
connect to mongodb replicaset from remote machine.