Maison > développement back-end > Golang > Pourquoi mon client gRPC ne parvient-il pas à se connecter à un serveur Go dans un conteneur Docker ?

Pourquoi mon client gRPC ne parvient-il pas à se connecter à un serveur Go dans un conteneur Docker ?

Mary-Kate Olsen
Libérer: 2024-12-21 11:55:12
original
888 Les gens l'ont consulté

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

Connexion au serveur Go GRPC exécuté dans un conteneur Docker local

Problème :

Lors de la tentative pour connecter un client gRPC à un serveur Go gRPC exécuté dans un conteneur Docker, une erreur est rencontré :

transport: http2Client.notifyError got notified that the client transport was broken EOF.
FATA[0000] rpc error: code = Internal desc = transport is closing
Copier après la connexion

Solution :

Le problème survient lorsque le serveur gRPC est configuré pour écouter un nom d'hôte ou une adresse IP spécifique, tel que localhost. Dans Docker, l'adresse localhost fait uniquement référence aux connexions de bouclage provenant du conteneur lui-même.

Pour résoudre ce problème, le serveur doit être configuré pour écouter toutes les adresses IP disponibles du conteneur. Ceci peut être réalisé en changeant le point de terminaison d'écoute de :

endpoint := "localhost:51672"
Copier après la connexion

à :

endpoint := ":51672"
Copier après la connexion

En utilisant ":" comme adresse d'écoute, le serveur se liera à toutes les interfaces et IP adresses dans le conteneur, permettant de transmettre et d'établir des connexions externes.

Supplémentaires Informations :

  • Docker crée des règles iptables pour transférer les connexions vers les ports exposés dans les conteneurs.
  • Les adresses IP attribuées aux conteneurs peuvent être visualisées à l'aide de la commande ip addr ls.
  • Lors de l'exécution du client dans le conteneur, il peut se connecter avec succès au serveur car le client et le serveur sont sur le même réseau interface.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal