Skip to content

Instantly share code, notes, and snippets.

@WangShuXian6
Forked from crapthings/docker-compose.yml
Last active April 29, 2020 19:39
Show Gist options
  • Save WangShuXian6/8426fa5eb459d8f562bbe0c4cf93e9b1 to your computer and use it in GitHub Desktop.
Save WangShuXian6/8426fa5eb459d8f562bbe0c4cf93e9b1 to your computer and use it in GitHub Desktop.
docker-compose rs init
version: '3'
services:
mongo1:
hostname: mongo1
container_name: localmongo1
image: mongo
restart: always
expose:
- 27017
ports:
- 27017:27017
command: '--quiet --bind_ip_all --port 27017 --replSet rs0'
volumes:
- ./db1/mongo:/data/db
#environment:
#MONGO_INITDB_ROOT_USERNAME: root
#MONGO_INITDB_ROOT_PASSWORD: root
networks:
- default
- nginx-proxy
mongo2:
hostname: mongo2
container_name: localmongo2
image: mongo
restart: always
expose:
- 27018
ports:
- 27018:27018
command: '--quiet --bind_ip_all --port 27018 --replSet rs0'
volumes:
- ./db2/mongo:/data/db
#depends_on:
#- mongo1
networks:
- default
- nginx-proxy
mongo3:
hostname: mongo3
container_name: localmongo3
image: mongo
restart: always
expose:
- 27019
ports:
- 27019:27019
command: '--quiet --bind_ip_all --port 27019 --replSet rs0'
volumes:
- ./db3/mongo:/data/db
#depends_on:
#- mongo2
networks:
- default
- nginx-proxy
rsinit:
build:
context: .
dockerfile: rsinit
depends_on:
- mongo1
- mongo2
- mongo3
entrypoint: ["sh", "-c", "rs.sh"]
networks:
- default
- nginx-proxy
networks:
nginx-proxy:
external: true
#!/bin/bash
echo "prepare rs initiating"
check_db_status() {
mongo1=$(mongo --host mongo1 --port 27017 --eval "db.stats().ok" | tail -n1 | grep -E '(^|\s)1($|\s)')
mongo2=$(mongo --host mongo2 --port 27018 --eval "db.stats().ok" | tail -n1 | grep -E '(^|\s)1($|\s)')
mongo3=$(mongo --host mongo3 --port 27019 --eval "db.stats().ok" | tail -n1 | grep -E '(^|\s)1($|\s)')
if [[ $mongo1 == 1 ]] && [[ $mongo2 == 1 ]] && [[ $mongo3 == 1 ]]; then
init_rs
else
check_db_status
fi
}
init_rs() {
ret=$(mongo --host mongo1 --port 27017 --eval "rs.initiate({ _id: 'rs0', members: [{ _id: 0, host: 'mongo1:27017' }, { _id: 1, host: 'mongo2:27018' }, { _id: 2, host: 'mongo3:27019' } ] })" > /dev/null 2>&1)
}
check_db_status > /dev/null 2>&1
echo "rs initiating finished"
exit 0
FROM mongo
ADD rs.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/rs.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment