Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro: Unable to connect to Redis

Queria fazer um teste simulando o container rodando na minha máquina local ao inves de iniciar direto pelo InteliJ

Eu subi uma nova imagem no docker-hub depois de ter rodado o docker build pra gerar a nova imagem com o target atualizado

Criei um redis.env na pasta env apenas para teste contendo:

REDIS_HOST=redis
REDIS_PORT=6379

E no application-prod.properties adicionei as duas configurações necessárias

spring.redis.host=${REDIS_HOST}
spring.redis.port=${REDIS_PORT}

Porém quando rodo um docker-compose up e tento acionar os endpoits, ele gera Erro: Unable to connect to Redis, alguém já passou por esse problema consegue me ajudar por favor?

Obs:

  1. Subindo o projeto localmente e dois containers isolados (Postgres e Redis), funciona
  2. Ao rodar o docker-compose up, todos os serviços sobem corretamente sem erros, tanto é que consigo acionar alguns endpoints, o erro está diretamente no redis

Segue abaixo meu docker-compose.yml

version: '3.9'
services:
  db:
    image: postgres
    env_file: ./env/postgres.env
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER}"]
      interval: 5s
      timeout: 5s
      retries: 10

  app:
    image: lucasconceicao/ambiente:latest
    env_file: ./env/app.env
    restart: unless-stopped
    ports:
      - "8080:8080"
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy
  nginx:
    image: nginx:stable-alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx:/etc/nginx/conf.d
    restart: unless-stopped
    depends_on:
      - app
  redis:
    image: redis:7.2.4
    env_file: ./env/redis.env
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
      interval: 5s
      timeout: 5s
      retries: 10

volumes:
  pgdata:

------------------------------------------------------------------------------------------------------------------------------------------------------
Meu application-prod.properties:

spring.datasource.url=${SPRING_DATASOURCE_URL}
spring.datasource.username=${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD}

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

app.security.jwt.secret=12345678

spring.mail.host=${MAIL_HOST}
spring.mail.username=${MAIL_USER}
spring.mail.password=${MAIL_PASSWORD}
spring.mail.port=587
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true


spring.datasource.hikari.minimum-idle=25
spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.connectionTimeout=10000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=1800000

spring.redis.host=${REDIS_HOST}
spring.redis.port=${REDIS_PORT}
2 respostas
solução!

Oi Lucas!

Essas variáveis:

REDIS_HOST=redis
REDIS_PORT=6379

Devem ficar no app.env, pois o Spring é quem precisa saber o endereço e porta do REDIS para conseguir se conectar corretamente.

Encontrei o problema rs

Eu tinha feito isso pra testar uma vez e esqueci de atualizar o target pra subir no docker-hub, ai voltei e tentei n maneiras diferentes, mas era isso mesmo, obrigado!