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
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"
in:
endpoint := ":51672"
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:
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!