DEV Community

Cover image for Utilizando Redis e Node.js com Docker: Um Guia Completo
Lucas Pereira de Souza
Lucas Pereira de Souza

Posted on

1

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!

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs