I can't connect to my MongoDb router. This is my docker-compose:
version: '3.5'
volumes:
mongoshard1_volume:
mongoshard2_volume:
mongoconf_volume:
services:
# MONGO DB SERVICES
# Node storing the first shard mongoshard1:
container_name: mongoshard1
image: mongo
command: mongod --shardsvr --replSet "mongors1" --dbpath /data/db --port ${MONGO_SHARD_PORT:-27017}
restart: on-failure
expose:
- "${MONGO_SHARD_PORT:-27017}"
environment:
TERM: bash
TZ: ${TIMEZONE}
volumes:
- mongoshard1_volume:/data/db
entrypoint:
- docker-entrypoint.sh
# Node storing the second shard mongoshard2:
container_name: mongoshard2
image: mongo
command: mongod --shardsvr --replSet "mongors2" --dbpath /data/db --port ${MONGO_SHARD_PORT:-27017}
restart: on-failure
expose:
- "${MONGO_SHARD_PORT:-27017}"
environment:
TERM: bash
TZ: ${TIMEZONE}
volumes:
- mongoshard2_volume:/data/db
# Node storing the configuration for the cluster mongoconf:
container_name: mongoconf
depends_on:
- mongoshard1
- mongoshard2
image: mongo
command: mongod --configsvr --replSet "mongorsconf" --dbpath /data/db --port ${MONGO_CONFIG_PORT:-27017}
restart: on-failure
expose:
- "${MONGO_CONFIG_PORT:-27017}"
environment:
TERM: bash
TZ: ${TIMEZONE}
volumes:
- mongoconf_volume:/data/db
# Node acting as the router for the mongorouter:
container_name: mongorouter
depends_on:
- mongoconf
image: mongo
command: mongos --configdb mongorsconf/mongoconf:${MONGO_CONFIG_PORT:-27017} --port ${MONGO_ROUTER_PORT:-27017} --bind_ip_all
restart: on-failure
expose:
- "${MONGO_ROUTER_PORT:-27017}"
ports:
- ${MONGO_ROUTER_PORT:-27017}:${MONGO_ROUTER_PORT:-27017}
environment:
TERM: bash
TZ: ${TIMEZONE}
and this is my setup.sh:
#!/bin/bash
docker-compose up -d
seconds=3
echo "Executing needed commands on MongoConf, MongoShard1, MongoShard2"
sleep $seconds
cmd="echo 'rs.initiate({_id: "mongorsconf", configsvr: true, members: [{ _id : 0, host : "mongoconf" }]})' | mongo"
docker exec -it mongoconf bash -c $cmd
cmd="echo 'rs.initiate({_id : "mongors1", members: [{ _id : 0, host : "mongoshard1" }]})' | mongo"
docker exec -it mongoshard1 bash -c $cmd
cmd="echo 'rs.initiate({_id : "mongors2", members: [{ _id : 0, host : "mongoshard2" }]})' | mongo"
docker exec -it mongoshard2 bash -c $cmd
echo "Done"
echo "Adding shards to MongoRouter"
sleep $seconds
cmd="echo 'sh.addShard("mongors1/mongoshard1")' | mongo"
docker exec -it mongorouter bash -c $cmd
cmd="echo 'sh.addShard("mongors2/mongoshard2")' | mongo"
docker exec -it mongorouter bash -c $cmd
When I try to connect to my MongoDB router, I receive a connection error. I tried to connect through MongoDBCompass using localhost:27017 and using MongoClient on Python too. All the server are "running" on Docker. I can't a solution for this problem, I lost like two days over it.
After the comment, I leave also this part of the code (I think is not important):
# MariaDB container
mariadb:
container_name: mariadb
image: mariadb
restart: on-failure
environment:
MYSQL_ROOT_PASSWORD: ${MARIADB_ROOT_PASS:-rootpass}
ports:
- ${MARIADB_PORT:-3306}:${MARIADB_PORT:-3306}
volumes:
- mariadb_volume:/var/lib/mysql
# MISCELLANEOUS SERVICES
# Adminer (phpMyAdmin alternative) container
adminer:
container_name: adminer
image: adminer
restart: on-failure
environment:
ADMINER_DEFAULT_SERVER: mariadb
ADMINER_DESIGN: galkaev
ports:
- ${ADMINER_PORT:-8080}:${ADMINER_PORT:-8080}