Mongo DB
Configurações do MongoDB e Mongo Express
Para o correto funcionamento do banco de dados MongoDB e da interface administrativa Mongo Express em ambiente de desenvolvimento, são necessários dois serviços: o MongoDB e o Mongo Express. A seguir, detalhamos as configurações de cada serviço:
Serviço MongoDB
O MongoDB é configurado como o banco de dados principal. Ele é configurado usando o Docker, e as variáveis de ambiente necessárias para a conexão estão definidas nos arquivos .env.dev, .env e .env.production que contém informações sensíveis, como nome do banco de dados e credenciais de acesso.
Configuração do MongoDB (docker-compose)
services:
mongo:
image: mongo
env_file:
- .env.dev # Arquivo de variáveis de ambiente
ports:
- "27017:27017" # Expondo a porta padrão do MongoDB
volumes:
- dbdata-volume:/data/db # Volume persistente para dados
environment:
MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} # Nome do banco de dados
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} # Nome de usuário admin
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} # Senha do usuário admin
-
Imagem: A imagem Docker utilizada é a oficial do MongoDB (
mongo). -
Variáveis de Ambiente: O arquivo
.env.devé responsável por fornecer as variáveis de ambiente, como o nome do banco de dados, o usuário admin e a senha. -
Portas: O MongoDB estará disponível na porta 27017, a porta padrão.
-
Volumes: O volume
dbdata-volumegarante que os dados do banco sejam persistidos entre reinicializações do container. -
Variáveis de Ambiente:
-
MONGO_INITDB_DATABASE: Define o nome do banco de dados inicial. -
MONGO_INITDB_ROOT_USERNAME: Nome do usuário root/admin do MongoDB. -
MONGO_INITDB_ROOT_PASSWORD: Senha para o usuário root/admin do MongoDB.
-
Serviço Mongo Express
Mongo Express é uma interface web administrativa para o MongoDB, permitindo que você visualize e manipule dados diretamente via navegador. Ele também está configurado com Docker e se comunica com o banco de dados MongoDB através de uma URL de conexão específica.
Configuração do Mongo Express (docker-compose)
services:
mongo-express:
image: mongo-express
ports:
- "8081:8081" # Expondo a porta para acesso via navegador
environment:
ME_CONFIG_MONGODB_URL: mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongo:27017/${MONGO_INITDB_DATABASE}?authSource=admin # URL de conexão com o MongoDB
ME_CONFIG_BASICAUTH_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} # Usuário de autenticação básica
ME_CONFIG_BASICAUTH_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} # Senha de autenticação básica
- Portas: A interface do Mongo Express estará disponível na porta 8081.
-
Variáveis de Ambiente:
-
ME_CONFIG_MONGODB_URL: A URL de conexão com o banco MongoDB, que inclui o usuário e a senha definidos no MongoDB, o nome do banco e o endereço do serviço de banco de dados. -
ME_CONFIG_BASICAUTH_USERNAMEeME_CONFIG_BASICAUTH_PASSWORD: Configurações de autenticação básica para acessar o Mongo Express. O nome de usuário e a senha são os mesmos definidos para o MongoDB.
-
Explicação da URL de Conexão
A URL de conexão mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongo:27017/${MONGO_INITDB_DATABASE}?authSource=admin segue a seguinte estrutura:
-
mongodb://: Protocolo de conexão com o MongoDB.
-
${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}: As credenciais de acesso (usuário e senha) que são lidas a partir das variáveis de ambiente definidas.
-
@mongo:27017: Nome do serviço Docker onde o MongoDB está rodando, seguido pela porta padrão (27017).
-
/${MONGO_INITDB_DATABASE}: Nome do banco de dados que será acessado.
-
?authSource=admin: Especifica o banco de dados de autenticação (admin).
Exemplo: mongodb://root:admin123@eclipse-db:27017/eclipse?authSource=admin
Estrutura de Funcionamento do Mongo
Para as configurações do Mongo e seus modelos, são essas as patas importantes:
/api/
├── src/
├── config/ # Configurações da CONNECTION STRING
│ ├── connectDb.ts
├── model/ # Modelos de todas as entidades
│ ├── avaliacao
│ ├── otp
│ ├── peca
│ ├── recurso
│ ├── triagem
│ ├── usuario
├── app.tsx # Criação do primerio Corregedor acontece aqui