В приложението flask имам функция, която се опитва да създаде клиент на redis
db = redis.Redis(host='localhost', port=6379, decode_responses=True)
Когато вашият процес на flask работи в контейнер, localhost
се отнася до мрежовия интерфейс на самия контейнер. Не се разрешава в мрежовия интерфейс на вашия хост докер.
Така че трябва да замените localhost
с IP адреса на контейнера, изпълняващ redis.
В контекста на файл docker-compose.yml, това е лесно, тъй като docker-compose ще накара имената на услуги да се разрешат до правилния IP адрес на контейнера:
version: "3"
services:
my_flask_service:
image: ...
my_redis_service:
image: ...
след това във вашето приложение flask използвайте:
db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)