replica Set mongo docker-compose

I’m trying to configure a mongodb replicaSet using docker-compose, but when I stop the master container it seems that it doesn’t pass to the secondary.

redis:
 image: redis
 ports:
  - "6379:6379"

mongo3:
 hostname: mongo3
 image: mongo
 entrypoint: [ "/usr/bin/mongod", "--replSet", "rs", "--journal","--dbpath","/data/db","--smallfiles", "--rest" ]
 volumes:
  - ./data/mongo3:/data/db
 ports:
  - "27018:27017"
  - "28018:28017"
 restart: always

mongo2:
 hostname: mongo2
 image: mongo
 entrypoint: [ "/usr/bin/mongod", "--replSet", "rs", "--journal","--dbpath","/data/db","--smallfiles", "--rest" ]
 volumes:
  - ./data/mongo2:/data/db
 ports:
  - "27019:27017"
  - "28019:28017"
 restart: always

mongo1:
 hostname: mongo1
 image: mongo
 entrypoint: [ "/usr/bin/mongod", "--replSet", "rs", "--journal","--dbpath","/data/db","--smallfiles", "--rest" ]
 volumes:
  - ./data/mongo1:/data/db
ports:
  - "27017:27017"
  - "28017:28017"
links:
 - mongo2:mongo2
 - mongo3:mongo3
restart: always

web:
 build: .
 ports:
  - "2000:2000"
 volumes:
  - .:/vip
 links:
  - redis
  - mongo1
  - mongo2
  - mongo3

nginx:
 restart: always
 build: ./nginx/
 ports:
  - "80:80"
 links:
  - web:web

mongosetup:
 image: mongo
 links:
  - mongo1:mongo1
  - mongo2:mongo2
  - mongo3:mongo3
 volumes:
  - ./scripts:/scripts
 entrypoint: [ "/scripts/setup.sh" ]

setup.sh :

  • Syn flood and net.ipv4.tcp_syncookies
  • Not able to execute RUN commands in Dockerfile
  • Docker engine fillingup storage
  • How to read data from file while running the docker image
  • why different output from zabbix_get and zabbix_agentd command?
  • Permission denied for protoc on maven build in Teamcity
  • #!/bin/bash
    
    MONGODB1=`ping -c 1 mongo1 | head -1  | cut -d "(" -f 2 | cut -d ")" -f 1`
    MONGODB2=`ping -c 1 mongo2 | head -1  | cut -d "(" -f 2 | cut -d ")" -f 1`
    MONGODB3=`ping -c 1 mongo3 | head -1  | cut -d "(" -f 2 | cut -d ")" -f 1`
    
    echo "**********************************************" ${MONGODB1}
    echo "Waiting for startup.."
    until curl http://${MONGODB1}:28017/serverStatus\?text\=1 2>&1 | grep uptime | head -1; do
      printf '.'
      sleep 1
    done
    
    echo curl http://${MONGODB1}:28017/serverStatus\?text\=1 2>&1 | grep uptime | head -1
    echo "Started.."
    
    
    echo SETUP.sh time now: `date +"%T" `
    mongo --host ${MONGODB1}:27017 <<EOF
    var cfg = {
        "_id": "rs",
        "version": 1,
        "members": [
            {
                "_id": 0,
                "host": "${MONGODB1}:27017",
                "priority": 2
            },
            {
                "_id": 1,
                "host": "${MONGODB2}:27017",
                "priority": 0
            },
            {
                "_id": 2,
                "host": "${MONGODB3}:27017",
                "priority": 0
            }
        ],settings: {chainingAllowed: true}
    };
    rs.initiate(cfg, { force: true });
    rs.reconfig(cfg, { force: true });
    rs.slaveOk();
    db.getMongo().setReadPref('nearest');
    db.getMongo().setSlaveOk(); 
    EOF
    

  • Undertsanding docker build
  • Bitbucket pipelines: No toolchains found in the NDK toolchains folder for ABI with prefix: aarch64-linux-android
  • Trying to use zap in a gitlab-ci workflow
  • Schema created in Docker by postgres user does not exist
  • port forwarding in docker-compose
  • PHP 7 install on Ubuntu 14.04 now fails due to libssl dependency that cant be resolved?
  • One Solution collect form web for “replica Set mongo docker-compose”

    I would adivse you to have a look at khezen/mongo.

    You can deploy a mongo replica set across a 3 nodes docker swarm with the following:

    version: '3'
    
    services:
    
      replica1:
        image: khezen/mongo:slim
        deploy:
          mode: replicated
          replicas: 1
          update_config:
            parallelism: 1
            delay: 10s
          restart_policy:
            condition: on-failure
          palcement:
            node.hostname: node-1
        environment:
          RS_NAME: shard1
          SHARD_SVR: 'y'
          AUTH: 'y'
        volumes:
          - /data/mongo/replica1:/data/db
        networks:
          - mongo_cluster
    
      replica2:
        image: khezen/mongo:slim
        deploy:
          mode: replicated
          replicas: 1
          update_config:
            parallelism: 1
            delay: 10s
          restart_policy:
            condition: on-failure
          palcement:
            node.hostname: node-2
        environment:
          RS_NAME: shard1
          SHARD_SVR: 'y'
          AUTH: 'y'
        volumes:
          - /data/mongo/replica2:/data/db
        networks:
          - mongo_cluster
    
      replica3:
        image: khezen/mongo:slim
        deploy:
          mode: replicated
          replicas: 1
          update_config:
            parallelism: 1
            delay: 10s
          restart_policy:
            condition: on-failure
          palcement:
            node.hostname: node-3
        environment:
          RS_NAME: shard1
          SHARD_SVR: 'y'
          MASTER: replica3
          SLAVES: replica1 replica2
          AUTH: 'y'
        volumes:
          - /data/mongo/replica3:/data/db
        networks:
          - mongo_cluster
    
    networks:
      mongo_cluster:
        driver: overlay
    

    disclaimer: I am the maintainer of this image.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.