Criar encurtador de URL com o NestJS
- #Docker
- #Node.js
- #MongoDB
Vamos criar um sistema capaz de encurtar um link e que possa ser compartilhado pelos diversos canais de comunicação, para isso dividimos o projeto em 6 partes.
Índice
- Defina a estructura do proecto com Docker y NestJS
- Crie o módelo de negócio conectado ao mongoDB
- Carregar arquivos com o Multer
- Adicionar cachê com o Redis
- Adicionar documentação com o Swagger
Repositorio: https://github.com/hectorcanaimero/shortener
Tecnologias a usar.
NestJS é um framework back-end que ajuda a criar aplicativos eficientes, escaláveis e confiáveis sobre Node.js. O NestJS usa TypeScript por padrão e possui uma sintaxe semelhante ao Angular.
MongoDB é um banco de dados de documentos com a escalabilidade e a flexibilidade que você deseja, juntamente com as consultas e a indexação de que você precisa; o que podemos chamar de banco de dados NoSQL.
Redis é um banco de dados de estrutura de chave-valor na memória; É uma excelente opção para implementar caches na memória altamente disponíveis para diminuir a latência de acesso a dados, aumentar a produtividade e aliviar a sobrecarga de aplicativos e bancos de dados relacionais ou NoSQL.
Docker é um sistema operacional (ou runtime) para contêineres; ele funciona como um conjunto de produtos de plataforma como serviço que usam a virtualização no nível do sistema operacional para entregar software em pacotes chamados contêineres. Os contêineres são isolados uns dos outros e agrupam seus próprios softwares, bibliotecas e arquivos de configuração.
Criar ambiente de trabalho
Etapa 1. Instale o nestjs e criei o projeto.
# instala de forma global NestJS
npm install -g @nestjs/cli
# crie o proeto
nest new shortcut
Etapa 2. Configurar o Docker.
Nesse post não vou mostrar como instalar e configurar o docker, aqui mesmo e no Medium tem muitos artigos que falam sobre como configurar no Windows, Linux e OSX.
No diretório raiz do projeto vamos criar o arquivo Dockefile
# Imagem do Docker
FROM node:18-alpine3.15
# Instale o bash na imagem
RUN apk add --no-cache bash
# Instale globalmente na imagem NestJS
RUN npm i -g @nestjs/cli@9.0.0
# Atribuir o usuário node ao docker
USER node
# O diretório onde o projeto está instalado
WORKDIR /home/node/app
Agora vamos criar um arquivo start.sh na raiz do projeto, ele irá instalar as bibliotecas nestjs e executá-lo.
#!/bin/bash
# Instale as bibliotecas no projeto que está no Docker
npm install
# Execute o nestJS no modo de desenvolvimento
npm run start:dev
então damos a ele permissões de execução, usando o seguinte comando
chmod +x start.sh
agora criamos o arquivo docker-compose.yaml
version: '3.7'
services:
# Servicio da App
app:
container_name: app-shortcut
build: .
entrypoint: ./start.sh
volumes:
- .:/home/node/app
ports:
- 3000:3000
networks:
- shorcutNet
networks:
shorcutNet:
driver: bridge
Etapa 3. Execute nosso Docker Compose.
É o momento em que a mágica é feita, vamos executar docker-compose.yaml usando o seguinte comando:
docker-compose up -d --build
se tudo estiver Ok, executamod o log do serviço NestJS no. docker
docker logs -f app-shortcut
Agora que a estrutura e o ambiente de trabalho estão prontos para começar, no próximo post estaremos configurando o banco de dados com Docker e criando nosso modelo de negócios.