2
respostas

[Dúvida] Mongo com replica-set no docker-compose.

Tenho uma aplicação( rodando no docker-compose ) em nestjs, mongo e prisma, porém o prisma precisa de um replica-set para fazer as transações do mongo. Alguém poderia me ajudar como devo proseguir para criar isso tudo em um .yml ?

2 respostas

Olá Gabriel!

Para criar um replica-set do MongoDB no docker-compose, você pode adicionar um serviço para cada instância do MongoDB que deseja incluir no replica-set. Cada serviço deve ter uma configuração específica para definir o papel de cada instância no replica-set.

Aqui está um exemplo de como você pode configurar o seu arquivo docker-compose.yml para criar um replica-set com três instâncias do MongoDB:

version: '3'
services:
  mongo1:
    image: mongo
    command: mongod --replSet rs0
    ports:
      - 27017:27017
    volumes:
      - ./data/mongo1:/data/db
    networks:
      - mongo-network

  mongo2:
    image: mongo
    command: mongod --replSet rs0
    ports:
      - 27018:27017
    volumes:
      - ./data/mongo2:/data/db
    networks:
      - mongo-network

  mongo3:
    image: mongo
    command: mongod --replSet rs0
    ports:
      - 27019:27017
    volumes:
      - ./data/mongo3:/data/db
    networks:
      - mongo-network

networks:
  mongo-network:
    driver: bridge

Neste exemplo, cada serviço mongo1, mongo2 e mongo3 representa uma instância do MongoDB. O parâmetro command é usado para iniciar cada instância com a opção --replSet rs0, que define o nome do replica-set como "rs0".

Certifique-se de criar os diretórios ./data/mongo1, ./data/mongo2 e ./data/mongo3 no mesmo diretório do seu arquivo docker-compose.yml para persistir os dados do MongoDB.

Depois de configurar o arquivo docker-compose.yml, você pode executar o comando docker-compose up para iniciar o replica-set.

Bons estudos!

Bom dia Lucas e obrigado pela força !

Pode me dizer se consigo utilizar somente um container mongo como replica-set ?

Meu docker-compose.yml com o mongo( o nejst js está separado em outro arquivo e está compartilhando da mesma rede mongo ):

Print do docker-compose com mongodb

Aqui o erro que recebo quando utilizar o comando npx prisma db push: Connection string do mongo usada pelo priscma e mensagem  de erro no console