L'utilisation de localhost dans le conteneur docker n'est pas valide car localhost signifie pour le conteneur son propre conteneur, donc si vous exécutez redis-cli à partir du conteneur Web, redis-cli essaie de trouver redis dans le conteneur Web au lieu du conteneur redis.
Vous devez spécifier le nom du service redis - docker (le réseau de docker-compose pour être plus précis) résoudra pour votre nom de service l'adresse IP du conteneur de redis, vous devez donc utiliser :
redis-cli -h redis ping
la sortie attendue est :
PONG
Modifier :
Cette réponse ne fonctionnera que si les deux services utilisent le même mode réseau, il y a donc 2 façons :
- Ajoutez network_mode:host au service Web, puis "localhost" pour redis, tout ira bien
- Supprimez network_mode:host de redis, puis le domaine "redis" ira bien