Heim > Backend-Entwicklung > Golang > Warum kann mein gRPC-Client keine Verbindung zu einem Go-Server in einem Docker-Container herstellen?

Warum kann mein gRPC-Client keine Verbindung zu einem Go-Server in einem Docker-Container herstellen?

Mary-Kate Olsen
Freigeben: 2024-12-21 11:55:12
Original
888 Leute haben es durchsucht

Why Does My gRPC Client Fail to Connect to a Go Server in a Docker Container?

Verbindung zum Go GRPC-Server herstellen, der im lokalen Docker-Container ausgeführt wird

Problem:

Beim Versuch Beim Verbinden eines gRPC-Clients mit einem Go-gRPC-Server, der in einem Docker-Container ausgeführt wird, tritt ein Fehler auf aufgetreten:

transport: http2Client.notifyError got notified that the client transport was broken EOF.
FATA[0000] rpc error: code = Internal desc = transport is closing
Nach dem Login kopieren

Lösung:

Das Problem tritt auf, wenn der gRPC-Server so konfiguriert ist, dass er einen bestimmten Hostnamen oder eine bestimmte IP-Adresse überwacht, z. B. localhost. Innerhalb von Docker bezieht sich die Localhost-Adresse nur auf Loopback-Verbindungen, die aus dem Container selbst stammen.

Um dieses Problem zu beheben, sollte der Server so konfiguriert sein, dass er alle verfügbaren IP-Adressen des Containers überwacht. Dies kann durch Ändern des Listenendpunkts von:

endpoint := "localhost:51672"
Nach dem Login kopieren

in:

endpoint := ":51672"
Nach dem Login kopieren

durch die Verwendung von „:“ als Listenadresse erreicht werden, bindet der Server an alle Schnittstellen und IP Adressen innerhalb des Containers, sodass externe Verbindungen weitergeleitet und aufgebaut werden können.

Zusätzlich Informationen:

  • Docker erstellt iptables-Regeln, um Verbindungen an exponierte Ports innerhalb von Containern weiterzuleiten.
  • Containern zugewiesene IP-Adressen können mit dem Befehl ip addr ls angezeigt werden.
  • Wenn der Client im Container ausgeführt wird, kann er erfolgreich eine Verbindung zum Server herstellen, da sich sowohl der Client als auch der Server im selben Netzwerk befinden Schnittstelle.

Das obige ist der detaillierte Inhalt vonWarum kann mein gRPC-Client keine Verbindung zu einem Go-Server in einem Docker-Container herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage