🐳 Como subir o banco do MongoDB usando Docker
Caso não tenha o MongoDB instalado em sua máquina e deseje usar o Docker, é só seguir os passos a seguir:
- Baixe a imagem do MongoDB:
docker pull mongo
- Crie o contêiner do MongoDB:
docker run --name <nome-do-container> -p 27017:27017 -d mongo
- Confira se o contêiner está rodando:
docker ps
🐳 Rodando no Docker vs Localmente
Rode os serviços
node
emongodb
com o comandodocker-compose up -d
.
- Lembre-se de parar o
mongo
se estiver usando localmente na porta padrão (27017
), ou adapte, caso queria fazer uso da aplicação em containers - Esses serviços irão inicializar um container chamado
car_shop
e outro chamadocar_shop_db
. - A partir daqui você pode rodar o container
car_shop
via CLI ou abri-lo no VS Code.
Use o comando
docker exec -it car_shop bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
Instale as dependências [Caso existam] com
npm install
⚠ Atenção ⚠ Caso opte por utilizar o Docker, TODOS os comandos disponíveis no package.json
(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec
citado acima.
⚠ Atenção ⚠ O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.
⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
✨ Dica: A extensão Remote - Containers
(que estará na seção de extensões recomendadas do VS Code) é indicada para que você possa desenvolver sua aplicação no container Docker direto no VS Code, como você faz com seus arquivos locais.
![](/yurigarrido/carshop-poo-mongodb-express/raw/main/images/remote-container.png)
Instale as dependências [Caso existam] com
npm install
⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o node
instalado em seu computador.
✨ Dica: O avaliador espera que a versão do node
utilizada seja a 16.
👷 Estruturação do projeto
✅ Arquivos prontos para uso
- O arquivo
src/models/connection.ts
possui o código necessário para realizar a conexão com o banco de dados:
import mongoose from 'mongoose';
const MONGO_DB_URL = 'mongodb://localhost:27017/CarShop';
const MONGO_DB_URL = 'mongodb://mongodb:27017/CarShop';
const connectToDatabase = (
mongoDatabaseURI = process.env.MONGO_URI
|| MONGO_DB_URL,
) => mongoose.connect(mongoDatabaseURI);
export default connectToDatabase;
- O arquivo
src/app.ts
contém o código necessário para subir o servidor:
import express from 'express';
const app = express();
export default app;
src/app.ts
exporte uma instância do app express
para que os testes funcionem.
🔥⚠️ Tenha atenção para os seguintes pontos: ⚠️ 🔥
➡️ A conexão do banco local contida no arquivo src/models/connection.ts
deverá estar na seguinte variável, ou no .env
:
const MONGO_DB_URL = 'mongodb://localhost:27017/CarShop';
- Para o avaliador funcionar mantenha a opção padrão com de URI do mongo como
process.env.MONGO_URI
emsrc/models/connection.ts
:
const connectToDatabase = (
mongoDatabaseURI = process.env.MONGO_URI // mantenha a env aqui
|| MONGO_DB_URL,
) => mongoose.connect(mongoDatabaseURI);
➡️ Lembre-se de não entregar o projeto com nenhum teste ignorado. Testes ignorados serão tratados como testes falhando!
➡️ Não apague, em hipótese alguma, qualquer teste ou arquivo deste repositório.
➡️ src/models
, src/services
, src/controllers
, src/interfaces
e seus respectivos arquivos criados durante a execução do projeto, devem seguir à risca os nomes informados no README.
➡️ Não altere ou instale novas dependências no arquivo packages.json
, pois o mesmo está travado para essa avaliação.