I am trying to run mongo and connected mongo-express defined in a following docker-compose.yml
:
version: '3.8'
services:
mongo1:
image: mongo:6.0.4
container_name: mongo1
restart: always
depends_on:
- mongo2
- mongo3
links:
- mongo2
- mongo3
ports:
- '27017:27017'
- '27018:27017'
networks:
- mongo-network
volumes:
- mongodb_rs_1_data:/data/db
- mongodb_rs_1_config:/data/configdb
- ./replicaSetSecurity.key:/data/replicaSetSecurity.key
- ./scripts/rs-init.sh:/scripts/rs-init.sh
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
entrypoint:
- bash
- -c
- |
chmod 400 /data/replicaSetSecurity.key
chown 999:999 /data/replicaSetSecurity.key
chmod +x /scripts/rs-init.sh
exec docker-entrypoint.sh $$@
command: "mongod --bind_ip_all --replSet replicaSetConfig --keyFile /data/replicaSetSecurity.key"
mongo2:
image: mongo:6.0.4
container_name: mongo2
restart: always
ports:
- '27019:27017'
networks:
- mongo-network
volumes:
- mongodb_rs_2_data:/data/db
- mongodb_rs_2_config:/data/configdb
- ./replicaSetSecurity.key:/data/replicaSetSecurity.key
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
entrypoint:
- bash
- -c
- |
chmod 400 /data/replicaSetSecurity.key
chown 999:999 /data/replicaSetSecurity.key
exec docker-entrypoint.sh $$@
command: "mongod --bind_ip_all --replSet replicaSetConfig --keyFile /data/replicaSetSecurity.key"
mongo3:
image: mongo:6.0.4
container_name: mongo3
ports:
- '27020:27017'
networks:
- mongo-network
volumes:
- mongodb_rs_3_data:/data/db
- mongodb_rs_3_config:/data/configdb
- ./replicaSetSecurity.key:/data/replicaSetSecurity.key
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
entrypoint:
- bash
- -c
- |
chmod 400 /data/replicaSetSecurity.key
chown 999:999 /data/replicaSetSecurity.key
exec docker-entrypoint.sh $$@
command: "mongod --bind_ip_all --replSet replicaSetConfig --keyFile /data/replicaSetSecurity.key"
mongo-express-1:
image: mongo-express:1.0.0-alpha
container_name: mongo-express-1
depends_on:
- mongo1
restart: always
ports:
- '8081:8081'
environment:
ME_CONFIG_MONGODB_URL: mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@mongo1:27017/?replicaSet=replicaSetConfig&authSource=admin
mongo-express-2:
image: mongo-express:1.0.0-alpha
container_name: mongo-express-2
depends_on:
- mongo2
restart: always
ports:
- '8082:8081'
environment:
ME_CONFIG_MONGODB_URL: mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@mongo2:27017/?readPreference=secondary&authSource=admin
mongo-express-3:
image: mongo-express:1.0.0-alpha
container_name: mongo-express-3
depends_on:
- mongo3
restart: always
ports:
- '8083:8081'
environment:
ME_CONFIG_MONGODB_URL: mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@mongo3:27017/?readPreference=secondary&authSource=admin
networks:
mongo-network:
driver: bridge
volumes:
mongodb_rs_1_data:
mongodb_rs_1_config:
mongodb_rs_2_data:
mongodb_rs_2_config:
mongodb_rs_3_data:
mongodb_rs_3_config:
I am running those services via the sh
script:
#!/bin/bash
DELAY=10
echo "****** Starting MongoDB and its dependencies ******"
docker-compose up -d
echo "****** Waiting for ${DELAY} seconds for containers to go up ******"
sleep $DELAY
docker exec mongo1 ./scripts/rs-init.sh
echo "****** Successfully started MongoDB and its dependencies ******"
The mentioned rs-init.sh
is as follows:
#!/bin/bash
mongosh -u admin -p password --authenticationDatabase admin <<EOF
var config = {
"_id": "replicaSetConfig",
"version": 1,
"members": [
{
"_id": 1,
"host": "mongo1:27017",
"priority": 3
},
{
"_id": 2,
"host": "mongo2:27017",
"priority": 2
},
{
"_id": 3,
"host": "mongo3:27017",
"priority": 1
}
]
};
//rs.initiate(config, { force: true });
rs.reconfig(config, {force: true});
rs.status();
EOF
When checking all the mongo-express instances logs in a Docker Desktop I can see following:
Could not connect to database using connectionString: mongodb://admin:password@mongo1:27017/?replicaSet=replicaSetConfig&authSource=admin"
2023-05-07 15:54:27 (node:7) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [mongo1:27017] on first connect [Error: getaddrinfo ENOTFOUND mongo1
2023-05-07 15:54:27 at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26) {
2023-05-07 15:54:27 name: 'MongoNetworkError'
2023-05-07 15:54:27 }]
2023-05-07 15:54:27 at Pool.<anonymous> (/node_modules/mongodb/lib/core/topologies/server.js:441:11)
2023-05-07 15:54:27 at Pool.emit (events.js:314:20)
2023-05-07 15:54:27 at /node_modules/mongodb/lib/core/connection/pool.js:564:14
2023-05-07 15:54:27 at /node_modules/mongodb/lib/core/connection/pool.js:1014:9
2023-05-07 15:54:27 at /node_modules/mongodb/lib/core/connection/connect.js:32:7
2023-05-07 15:54:27 at callback (/node_modules/mongodb/lib/core/connection/connect.js:300:5)
2023-05-07 15:54:27 at Socket.<anonymous> (/node_modules/mongodb/lib/core/connection/connect.js:330:7)
2023-05-07 15:54:27 at Object.onceWrapper (events.js:421:26)
2023-05-07 15:54:27 at Socket.emit (events.js:314:20)
2023-05-07 15:54:27 at emitErrorNT (internal/streams/destroy.js:92:8)
2023-05-07 15:54:27 at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
2023-05-07 15:54:27 at processTicksAndRejections (internal/process/task_queues.js:84:21)
I have tried many changes but without success. As I mentioned I do start container(s) via the mentioned script dbstart.sh
.
Do not anyone know, if I am missing anything?
Thank you!