Използването на localhost в контейнер за докер е невалидно, тъй като localhost означава за контейнер неговия собствен контейнер, така че ако стартирате redis-cli от уеб контейнера, redis-cli се опитва да намери redis в уеб контейнера вместо контейнера redis.
Трябва да посочите име на услугата на redis - docker (мрежата на docker-compose, за да бъде по-конкретна) ще разреши за вас името на услугата до IP на контейнера на redis, така че трябва да използвате:
redis-cli -h redis ping
очакваният изход е:
PONG
Редактиране:
Този отговор ще работи само ако и двете услуги използват един и същ мрежов режим, така че има 2 начина:
- Добавете network_mode:host към уеб услуга и след това „localhost“ за redis ще бъде добре
- Премахнете network_mode:host от redis и след това домейнът „redis“ ще бъде добре