Docker ポート公開の問題: 「受信失敗: ピアによる接続のリセット」の解決
Docker 環境で問題が発生しましたコンテナ内で実行されている gRPC サービスを公開しようとしているとき。ポート 8081 でリッスンしているサービスは、「受信失敗: ピアによって接続がリセットされました。」というエラーで接続の受信に失敗します。
Docker Compose 構成では、ポート 8081 がコンテナの内部ポートに正しくマップされていますが、問題は次の理由で発生します。 gRPC サーバーがリスニング アドレスにバインドする方法に影響します。デフォルトでは、「http.ListenAndServe("localhost:8081", nil)」を使用すると、サーバーはループバック インターフェイス (127.0.0.1) でのみリッスンします。これは、コンテナ自体内からの接続のみを受け入れることができることを意味します。
この問題を解決するには、すべてのインターフェイスでリッスンするように Go アプリケーションを変更します。これは、代わりに次のコードを使用することで実現できます。
http.ListenAndServe("0.0.0.0:8081", nil)
「0.0.0.0」を指定すると、サーバーはすべてのネットワーク インターフェイスにバインドされ、ループバック接続と外部接続の両方を受け入れることができるようになります。これにより、コンテナの外部からのリクエストが確実に gRPC サービスに到達できるようになります。
追加メモ:
以上がDocker で gRPC サービスに接続できないのはなぜですか: 「受信失敗: ピアによって接続がリセットされました」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。