Dockerコンテナでlocalhostを使用することは無効です。これは、localhostが自分のコンテナをコンテナ化することを意味するため、Webコンテナ内からredis-cliを実行すると、redis-cliはredisコンテナではなくWebコンテナでredisを見つけようとします。
Uはredisサービス名を指定する必要があります-docker(より具体的にはdocker-composeのネットワーク)はサービス名をredisのコンテナIPに解決するため、次を使用する必要があります:
redis-cli -h redis ping
期待される出力は次のとおりです:
PONG
編集:
この回答は、両方のサービスが同じネットワークモードを使用している場合にのみ機能するため、2つの方法があります。
- network_mode:hostをWebサービスに追加すると、redisの「localhost」で問題ありません
- redisからnetwork_mode:hostを削除すると、「redis」ドメインで問題ありません