フラスコアプリには、redisクライアントを作成しようとする機能があります
db = redis.Redis(host='localhost', port=6379, decode_responses=True)
フラスコプロセスがコンテナで実行される場合、localhost
コンテナ自体のネットワークインターフェイスを指します。 Dockerホストのネットワークインターフェースには解決されません。
したがって、localhost
を置き換える必要があります redisを実行しているコンテナのIPアドレスを使用します。
docker-compose.ymlファイルのコンテキストでは、docker-composeによってサービス名が正しいコンテナーIPアドレスに解決されるため、これは簡単です。
version: "3"
services:
my_flask_service:
image: ...
my_redis_service:
image: ...
次に、フラスコアプリで、次を使用します:
db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)