Utilizando Redis e Node.js com Docker: Um Guia Completo

lucaspereiradesouzat

Lucas Pereira de Souza

Posted on August 3, 2024

Utilizando Redis e Node.js com Docker: Um Guia Completo

Image description

Introdução

Redis é um banco de dados de estrutura de dados em memória, usado como banco de dados, cache e broker de mensagens. Node.js é uma plataforma JavaScript popular que permite a execução de JavaScript no lado do servidor. Docker facilita a criação, a implantação e a execução de aplicativos usando contêineres. Neste post, vamos explorar como integrar Redis com Node.js utilizando Docker.

Pré-requisitos

  1. Docker instalado em sua máquina.
  2. Node.js e npm instalados.
  3. Conhecimento básico de JavaScript e Docker.

Passo 1: Configurar o Projeto Node.js

  1. Crie uma pasta para o seu projeto:

    mkdir node-redis-docker
    cd node-redis-docker
    
  2. Inicialize um novo projeto Node.js:

    npm init -y
    
  3. Instale as dependências necessárias:

    npm install express redis
    
  4. Crie um arquivo index.js com o seguinte conteúdo:

    const express = require('express');
    const redis = require('redis');
    
    const app = express();
    const client = redis.createClient({
        host: 'redis-server',
        port: 6379
    });
    
    client.on('error', (err) => {
        console.error('Redis error:', err);
    });
    
    app.get('/', (req, res) => {
        client.get('visits', (err, visits) => {
            if (err) {
                res.status(500).send('Redis error');
                return;
            }
    
            visits = visits ? parseInt(visits) : 0;
    
            res.send(`Número de visitas: ${visits}`);
    
            client.set('visits', visits + 1);
        });
    });
    
    app.listen(3000, () => {
        console.log('Listening on port 3000');
    });
    

Passo 2: Configurar o Docker

  1. Crie um arquivo Dockerfile na raiz do projeto com o seguinte conteúdo:

    # Use a imagem base do Node.js
    FROM node:14
    
    # Crie o diretório de trabalho
    WORKDIR /app
    
    # Copie o package.json e instale as dependências
    COPY package*.json ./
    RUN npm install
    
    # Copie o restante do código do aplicativo
    COPY . .
    
    # Exponha a porta em que a aplicação irá rodar
    EXPOSE 3000
    
    # Comando para iniciar a aplicação
    CMD ["node", "index.js"]
    
  2. Crie um arquivo docker-compose.yml com o seguinte conteúdo:

    version: '3'
    services:
      web:
        build: .
        ports:
          - "3000:3000"
        depends_on:
          - redis-server
      redis-server:
        image: "redis:alpine"
    

Passo 3: Construir e Executar os Contêineres

  1. Construa e inicie os contêineres usando Docker Compose:

    docker-compose up --build
    
  2. Após os contêineres serem iniciados, você verá algo semelhante a isto:

    web_1          | Listening on port 3000
    redis-server_1 | 1:C 29 Jul 2024 10:27:23.123 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'
    
  3. Abra seu navegador e navegue até http://localhost:3000. Você verá a mensagem indicando o número de visitas.

Conclusão

Neste blog post, configuramos um ambiente Node.js com Redis usando Docker. Com essas etapas, você pode facilmente containerizar sua aplicação e garantir que todas as dependências estejam isoladas e consistentes, facilitando o desenvolvimento e a implantação.

Próximos Passos

  1. Explorar mais comandos Redis: Descubra mais sobre os comandos que Redis oferece e como utilizá-los.
  2. Escalar seu aplicativo: Aprenda a escalar seu aplicativo Node.js com Redis utilizando técnicas como sharding e clustering.
  3. Segurança: Investigue como adicionar autenticação e autorização no Redis para um ambiente de produção seguro.

Sinta-se à vontade para deixar suas perguntas ou compartilhar suas experiências nos comentários abaixo!

💖 💪 🙅 🚩
lucaspereiradesouzat
Lucas Pereira de Souza

Posted on August 3, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related