Die Verwendung von localhost im Docker-Container ist ungültig, da localhost für den Container seinen eigenen Container bedeutet. Wenn Sie also redis-cli aus dem Web-Container heraus ausführen, versucht redis-cli, redis im Web-Container statt im redis-Container zu finden.
Sie müssen den Redis-Dienstnamen angeben - Docker (genauer gesagt das Netzwerk von docker-compose) löst Ihren Dienstnamen in die Container-IP von Redis auf, also sollten Sie Folgendes verwenden:
redis-cli -h redis ping
erwartete Ausgabe ist:
PONG
Bearbeiten:
Diese Antwort funktioniert nur, wenn beide Dienste denselben Netzwerkmodus verwenden, also gibt es zwei Möglichkeiten:
- Fügen Sie network_mode:host zum Webdienst hinzu und dann "localhost" für redis ist in Ordnung
- Entfernen Sie network_mode:host aus redis und dann die "redis"-Domain, das ist in Ordnung