In der Flask-App habe ich eine Funktion, die versucht, einen Redis-Client zu erstellen
db = redis.Redis(host='localhost', port=6379, decode_responses=True)
Wenn Ihr Flask-Prozess in einem Container ausgeführt wird, wird localhost
bezieht sich auf die Netzwerkschnittstelle des Containers selbst. Es wird nicht in die Netzwerkschnittstelle Ihres Docker-Hosts aufgelöst.
Sie müssen also localhost
ersetzen mit der IP-Adresse des Containers, auf dem redis ausgeführt wird.
Im Kontext einer docker-compose.yml-Datei ist dies einfach, da docker-compose dafür sorgt, dass Dienstnamen in die richtige Container-IP-Adresse aufgelöst werden:
version: "3"
services:
my_flask_service:
image: ...
my_redis_service:
image: ...
Verwenden Sie dann in Ihrer Flask-App:
db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)