sql >> Databasteknik >  >> NoSQL >> Redis

Docker Redis Connection vägrade

Ditt problem

Docker Compose skapar en separat dockningsbehållare för olika tjänster. Varje container är, logiskt sett, som olika separerade datorservrar som endast är anslutna till varandra via dockningsnätverk.

Betrakta varje ruta i det här diagrammet som en individuell dator, då är detta praktiskt taget vad du har:

+----------------------------------------------------------+
|                       your machine                       |
+----------------------------------------------------------+
                               |                    
        +------ (virtual network by docker) -------+
        |                      |                   |
+-----------------+ +-------------------+ +----------------+
| "php" container | | "redis" container | | "db" container |
+-----------------+ +-------------------+ +----------------+

Din PHP-behållare ser inte någon redis i "localhost" eftersom det inte finns någon redis i den. Precis som att den inte skulle se någon MySQL i "localhost". Din redis körs i "redis"-behållaren. Din MySQL körs i din "db"-behållare.

Det som förvirrar dig är de portbindande direktiven (dvs. ports i denna definition):

redis:
  build:
    context: .
    dockerfile: Dockerfile_redis
  ports:
    - "6379:6379"

Porten 6379 av "redis"-behållaren är bunden till din dator, men ENDAST till din dator . Andra behållare har inte samma tillgång till hamnbindningarna. Så även din dator kan ansluta den med '127.0.0.1:6379', php container kan inte göra detsamma.

Lösning

Som beskrivs i Nätverk i Docker Compose kan varje docker compose-behållare komma åt andra behållare genom att använda tjänstens namn som värdnamn. Till exempel, din programmering som körs av tjänsten php kan komma åt din MySQL-tjänst med värdnamnet db .

Så du bör ansluta redis med dess värdnamn redis

$redis = new \Redis();
try {
    $redis->connect('redis', 6379);
} catch (\Exception $e) {
    var_dump($e->getMessage())  ;
    die;
}


  1. Spring Data Redis - UUID id - ConverterNotFoundException

  2. Selleri försöker ansluta till fel mäklare

  3. Kan Redis skriva ut till en databas som PostgreSQL?

  4. Skapa ett flerspråkigt textindex i MongoDB