Spróbuj zmienić 127.0.0.1:6379 do redis:6379 .
Chociaż Redis działa, Twój python kontener nie może się z nim komunikować; dzieje się tak, ponieważ próbuje połączyć się z 127.0.0.1:6379 , ale z perspektywy kontenera nic tam nie działa. Debugowanie może być nieco frustrujące, ale jest to łatwiejsze, jeśli pamiętasz, że kontenery mają własną sieć nazw. W rezultacie python lokalny host !=redis 's localhost !=localhost twojego komputera-hosta .
Na szczęście łatwo jest połączyć kontenery, które współdzielą ten sam most i domyślnie docker-compose tworzy pojedynczą sieć mostową i łączy z nią wszystkie kontenery, zapewniając niezbędny DNS, aby umożliwić im wzajemne wykrywanie. W rezultacie komunikacja kontener-kontener działa po prostu przy użyciu nazwy usługi.
Uwaga:możliwe jest uruchamianie kontenerów w tej samej przestrzeni nazw i uruchamianie ich w przestrzeni nazw hosta za pomocą --net=container:<container-id> lub --net=host flaga. Jest to szczególnie przydatne przy uruchamianiu narzędzi debugowania w kontenerze i dołączaniu ich do sieciowej przestrzeni nazw innego kontenera lub hosta, np. użycie netshoot, aby zobaczyć, które porty nasłuchują w kontenerze (odkryte lub nie), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn .