Tudo deve estar dentro da mesma Docker Network, então vamos criá-la aqui:

docker network create mongoNet

docker network ls

Antes de subir as aplicações deverão ser criado os container com uma instancia do Mongo em execução. Sendo assim deixo disponibilizado o Dockerfile e docker-compose para configurar. Também abaixo temos o arquivo mongod.env que será responsável em definir o usuário e senha de acesso ao cluster. Todos os arquivos devem constar na mesma pasta que será responsável somente pela criação das imagens do MongoDb.

No link temos um exemplo de como deverá ficar a pasta para criação do cluster:

https://github.com/GustavoLeck/MongoReplicaSet

mongod.env

MONGO_INITDB_ROOT_USERNAME=root
MONGO_INITDB_ROOT_PASSWORD=password

docker-compose.yaml

version: "3.3"

volumes:
  mongo-keys:
  m1:
  m2:
  m3:

networks:
  mongoNet:
    name: mongoNet
    driver: bridge

  mongo-keys:
    image: depop/openssl-bats
    container_name: mongo-keys
    volumes:
      - mongo-keys:/mongo-conf
    command: 'bash -c "openssl rand -base64 741 > /mongo-conf/mongodb-keyfile; chmod 600 /mongo-conf/mongodb-keyfile; chown 999 /mongo-conf/mongodb-keyfile"'

  m1:
    build: .
    networks:
      - mongoNet
    restart: always
    container_name: m1
    image: m1
    volumes:
      - mongo-keys:/opt/keyfile
      - m1:/data/db
    env_file: ./mongod.env
    ports:
      - "30001:27017"
    command: 'mongod --auth --keyFile /opt/keyfile/mongodb-keyfile --replSet mongoSet'
    depends_on:
      - mongo-keys
  m2:
    build: .
    networks:
      - mongoNet
    restart: always
    container_name: m2
    image: m2
    volumes:
      - mongo-keys:/opt/keyfile
      - m2:/data/db
    env_file: ./mongod.env
    ports:
      - "30002:27017"
    command: 'mongod --auth --keyFile /opt/keyfile/mongodb-keyfile --replSet mongoSet'
    depends_on:
      - mongo-keys
  m3:
    build: .
    networks:
      - mongoNet
    restart: always
    container_name: m3
    image: m3
    volumes:
      - mongo-keys:/opt/keyfile
      - m3:/data/db
    env_file: ./mongod.env
    ports:
      - "30003:27017"
    command: 'mongod --auth --keyFile /opt/keyfile/mongodb-keyfile --replSet mongoSet'
    depends_on:
      - mongo-keys

Dockerfile

FROM mongo:7.0

CMD ["mongod", "--bind_ip_all", "--replSet", "mongoSet"]

Os arquivos devem ser criados em uma pasta diferente dos projetos


Para criar o replicaSet deve ser executado os comandos abaixo

docker exec -it m1 mongosh -u root -p password

rs.initiate({ "_id": "mongoSet", "members": [{ "_id": 0, "host": "m1:27017","priority": 1  }, { "_id": 1, "host": "m2:27017", "priority": 2 }, { "_id": 2, "host": "m3:27017", "priority": 3 }]})

rs.status()