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
.