Prøv at ændre 127.0.0.1:6379
til redis:6379
.
Selvom Redis kører, er din python
containeren er ikke i stand til at kommunikere med den; dette er fordi den forsøger at oprette forbindelse til 127.0.0.1:6379
, men fra containerens perspektiv er der ikke noget, der kører der. Dette kan være lidt frustrerende at fejlfinde, men det er lidt nemmere, hvis du husker på, at containere får deres eget netværksnavneområde. Som et resultat, python
's localhost !=redis
's localhost !=din værtsmaskines localhost
.
Heldigvis er det nemt at forbinde containere, der deler den samme bro, og som standard docker-compose
opretter et enkelt bro-netværk og forbinder alle dine containere til dem, hvilket giver den nødvendige DNS for at give dem mulighed for at opdage hinanden. Som et resultat fungerer container-til-container-kommunikation blot ved at bruge tjenestenavnet.
Som en note er det muligt at køre containere i det samme navneområde og at køre i dem i værtens navneområde via --net=container:<container-id>
eller --net=host
flag. Dette er især nyttigt til at køre fejlfindingsværktøjer i en container og vedhæfte dem til netværksnavneområdet for enten en anden container eller værten, f.eks. ved at bruge netshoot til at se, hvilke porte der lytter i containeren (eksponerede eller ej), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn
.