sql >> Databáze >  >> NoSQL >> Redis

Docker Redis Connection odmítl

Váš problém

Docker Compose vytváří oddělený kontejner dockeru pro různé služby. Každý kontejner je, logicky řečeno, jako různé oddělené počítačové servery, které se vzájemně propojují pouze prostřednictvím dockerové sítě.

Považujte každé pole v tomto diagramu za samostatný počítač, pak máte prakticky toto:

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

Váš kontejner PHP nevidí žádné redis v "localhost", protože v něm není žádný redis. Stejně jako by to nevidělo žádné MySQL v "localhost". Váš redis běží v kontejneru „redis“. Vaše MySQL běží ve vašem "db" kontejneru.

Věci, které vás mate, jsou direktivy port binding (tj. ports v této definici):

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

Port 6379 kontejneru „redis“ je vázán na váš počítač, ale POUZE k vašemu počítači . Jiný kontejner nemá stejný přístup k vazbám portu. Takže i váš počítač jej může propojit s '127.0.0.1:6379', php kontejner nemůže udělat totéž.

Řešení

Jak je popsáno v Networking in Docker Compose, každý kontejner docker Compose může přistupovat k jinému kontejneru pomocí názvu služby jako názvu hostitele. Například vaše programování běžící službou php může přistupovat k vaší službě MySQL s názvem hostitele db .

Měli byste tedy propojit redis s jeho názvem hostitele redis

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


  1. MongoDB odlišný()

  2. Spuštění Redis na Travis CI

  3. DisabledBackend:Nevyrovnané chování s celerem, Redisem a baňkou

  4. Úvod do datových struktur Redis:sady