Problem z połączeniem do Redisa

Problem z połączeniem do Redisa
CY
  • Rejestracja:ponad rok
  • Ostatnio:2 miesiące
  • Postów:2
0

Kod odpowiedzialny za łączenie do Redisa:

Kopiuj
import redis.clients.jedis.JedisPool;

public class Database {
    private final JedisPool pool;

    public Database() {
        String redisHost = System.getenv("REDIS_HOST");
        if (redisHost == null || redisHost.isEmpty()) {
            this.pool = new JedisPool("localhost", 6379);
        } else {
            this.pool = new JedisPool(redisHost, 6379);
        }
    }
}

z biblioteki:

Kopiuj
<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>5.1.2</version>
</dependency>

Tworzę networka i uruchamiam w networku aplikację i bazę:

Kopiuj
docker network create --driver bridge tool-network
docker run -d -p 6379:6379 --name redis --network tool-network redis
docker run -d --name myapp -e REDIS_HOST=redis --network tool-network tool

Niezależnie od wartości zmiennej REDIS_HOST, czy to localhost:

Kopiuj
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed to create socket. 

czy redis lub host.docker.internal:

Kopiuj
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed to connect to any host resolved for DNS name.

Wersja Dockera 26.0.1.

edytowany 1x, ostatnio: Riddle
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:23 minuty
  • Postów:3493
1

Redis i aplikacja są w jednej sieci.
Powinno działać przy użyciu nazwy kontenera, czyli u Ciebie redis. Sprawdź czy masz dobrze ustawioną zmienną środowiskową REDIS_HOST.

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 8 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10074
0

Spróbuj po prostu new JedisPool("redis", 6379) bez cudów i zobacz czy działa.

Ewentualną parametryzację zostaw na późniejszy etap rozwoju aplikacji, jeśli w ogóle to będzie konieczne.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.