Maison >développement back-end >Golang >Pourquoi ne puis-je pas me connecter à mon service gRPC dans Docker : « Échec de la réception : connexion réinitialisée par un homologue » ?

Pourquoi ne puis-je pas me connecter à mon service gRPC dans Docker : « Échec de la réception : connexion réinitialisée par un homologue » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 04:36:03598parcourir

Why Can't I Connect to My gRPC Service in Docker:

Problème d'exposition du port Docker : résolution de « Échec de la réception : réinitialisation de la connexion par un homologue »

Dans un environnement Docker, vous avez rencontré un problème en essayant d'exposer un service gRPC exécuté dans un conteneur. Le service, qui écoute sur le port 8081, ne parvient pas à recevoir les connexions avec l'erreur « Échec de la réception : connexion réinitialisée par un homologue. »

Votre configuration Docker Compose mappe correctement le port 8081 au port interne du conteneur, mais le problème survient en raison à la manière dont le serveur gRPC se lie à son adresse d'écoute. Par défaut, lors de l'utilisation de "http.ListenAndServe("localhost:8081", nil)", le serveur écoute uniquement sur l'interface de bouclage (127.0.0.1). Cela signifie qu'il ne peut accepter que les connexions provenant du conteneur lui-même.

Pour résoudre ce problème, vous pouvez modifier votre application Go pour écouter sur toutes les interfaces. Ceci peut être réalisé en utilisant le code suivant :

http.ListenAndServe("0.0.0.0:8081", nil)

En spécifiant "0.0.0.0", le serveur se liera à toutes les interfaces réseau, lui permettant d'accepter à la fois les connexions de bouclage et externes. Cela garantira que les demandes provenant de l'extérieur du conteneur pourront atteindre votre service gRPC.

Remarques supplémentaires :

  • Si vous utilisez Kubernetes pour gérer vos conteneurs Docker , assurez-vous que le service exposant le port 8081 a la bonne NetworkPolicy configurée pour autoriser le trafic entrant.
  • Si vous rencontrez toujours des problèmes après avoir effectué les modifications ci-dessus, pensez à vérifier les paramètres de votre pare-feu pour vous assurer que le port est ouvert aux connexions entrantes.

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!

Déclaration:
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