Problem z połączeniem do Redisa

0

Kod odpowiedzialny za łączenie do Redisa:

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:

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

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

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:

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

czy redis lub host.docker.internal:

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

Wersja Dockera 26.0.1.

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1