Użycie localhosta w kontenerze dockera jest nieprawidłowe, ponieważ localhost oznacza dla kontenera jego własny kontener, więc jeśli uruchomisz redis-cli z poziomu kontenera internetowego, redis-cli próbuje znaleźć redis w kontenerze internetowym zamiast w kontenerze redis.
Musisz określić nazwę usługi redis - docker (a dokładniej sieć docker-compose) przekształci nazwę usługi na adres IP kontenera redis, więc powinieneś użyć:
redis-cli -h redis ping
oczekiwany wynik to:
PONG
Edycja:
Ta odpowiedź będzie działać tylko wtedy, gdy obie usługi korzystają z tego samego trybu sieci, więc istnieją 2 sposoby:
- Dodaj network_mode:host do usługi internetowej, a następnie „localhost” dla redis będzie w porządku
- Usuń network_mode:host z redis, a wtedy domena „redis” będzie dobrze