Nell'app flask ho una funzione che tenta di creare un client redis
db = redis.Redis(host='localhost', port=6379, decode_responses=True)
Quando il processo di flask viene eseguito in un contenitore, localhost
si riferisce all'interfaccia di rete del container stesso. Non si risolve nell'interfaccia di rete del tuo host Docker.
Quindi devi sostituire localhost
con l'indirizzo IP del contenitore che esegue redis.
Nel contesto di un file docker-compose.yml, questo è facile in quanto docker-compose risolverà i nomi dei servizi nell'indirizzo IP del contenitore corretto:
version: "3"
services:
my_flask_service:
image: ...
my_redis_service:
image: ...
quindi nell'app Flask, usa:
db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)