Dans l'application flask, j'ai une fonction qui essaie de créer un client redis
db = redis.Redis(host='localhost', port=6379, decode_responses=True)
Lorsque votre processus de flacon s'exécute dans un conteneur, localhost
fait référence à l'interface réseau du conteneur lui-même. Il ne se résout pas à l'interface réseau de votre hôte Docker.
Vous devez donc remplacer localhost
avec l'adresse IP du conteneur exécutant redis.
Dans le contexte d'un fichier docker-compose.yml, c'est simple car docker-compose résoudra les noms de service en l'adresse IP correcte du conteneur :
version: "3"
services:
my_flask_service:
image: ...
my_redis_service:
image: ...
puis dans votre application flask, utilisez :
db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)