1
resposta

[Dúvida] Erro docker com redis

Pelo que entendi redis não consegue consumir no docker, porém é como se estivesse rodando

kafka-1 | [2024-10-01 19:32:58,368] TRACE [Controller id=1] Checking need to trigger auto leader balancing (kafka.controller.KafkaController) nlp_app | Erro ao conectar ao Redis: Error 111 connecting to 127.0.0.1:6379. Connection refused. nlp_app | INFO: 172.19.0.1:48814 - "GET /dados HTTP/1.1" 500 Internal Server Error kafka-1 | [2024-10-01 19:37:58,372] INFO [Controller id=1] Processing automatic preferred replica leader election (kafka.controller.KafkaController) kafka-1 | [2024-10-01 19:37:58,372] TRACE [Controller id=1] Checking need to trigger auto leader balancing (kafka.controller.KafkaController)

ARQUIVO DOCKER_COMPOSE: version: '3.3'

services: app: build: . container_name: nlp_app ports: - "8000:8000" volumes: - .:/app depends_on: - redis - kafka

redis: image: "redis:alpine" container_name: nlp_redis ports: - "6380:6379" command: ["redis-server", "--port", "6379"] volumes: - "sail-redis:/data" healthcheck: test: ["CMD", "redis-cli", "ping"] retries: 3 timeout: 5s

1 resposta

Olá Julia. Tudo bem?

Seu aplicativo nlp_app está tentando se conectar ao Redis, mas está recebendo um erro de "Connection refused". Isso geralmente acontece quando o serviço não está acessível no endereço ou porta esperados.

No seu arquivo docker-compose.yml, você mapeou a porta do Redis da seguinte forma: "6380:6379". Isso significa que o Redis está rodando na porta 6379 dentro do contêiner, mas está exposto na porta 6380 para o host. No entanto, o seu aplicativo está tentando se conectar ao Redis na porta 6379 no host (127.0.0.1:6379), o que causa o erro.

Para resolver, faça o seguinte:

  1. Conectar ao Redis usando o nome do serviço e a porta interna: No seu código do aplicativo, ao invés de se conectar a 127.0.0.1:6379, tente se conectar a nlp_redis:6379. Isso utiliza o nome do serviço definido no docker-compose, permitindo que o contêiner nlp_app se conecte diretamente ao contêiner redis pela rede interna do Docker.

  2. Alterar a porta exposta no host: Para garantir que o Redis esteja acessível na porta 6379 no host, altere o mapeamento de porta no docker-compose.yml para "6379:6379".

Exemplo de como você pode modificar a conexão no seu código:

import redis

# Conectando ao Redis usando o nome do serviço e porta interna
client = redis.StrictRedis(host='nlp_redis', port=6379, db=0)

Espero ter ajudado.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!