問題:
Docker コンテナ内で実行されている Go GRPC サーバーに接続しようとすると、エラー「transport: http2Client.notifyError で、クライアント トランスポートが EOF に壊れたことが通知されました。FATA[0000] rpc エラー: コード = 内部記述 = トランスポートが閉じています。
説明:
デフォルトでは、ローカルホスト アドレス (「127.0.0.1」) でリッスンする GRPC サーバーは、同じマシン内からのみアクセスできます。 容器。サーバーが Docker コンテナ内で実行される場合、コンテナの外部からアクセスできない別の IP アドレスが割り当てられます。
解決策:
この問題を解決するには、GRPC サーバーは、「localhost:51672」ではなくワイルドカード アドレス (「:51672」) にバインドする必要があります。これにより、サーバーはコンテナに関連付けられたすべての IP アドレスをリッスンできるようになり、コンテナの外部のクライアントからアクセスできるようになります。
Docker ネットワーキング:
Docker コンテナ内のポート (この場合は 51672) を使用すると、Docker はホスト マシンの IP アドレスから受信したトラフィックを転送するための iptables ルールを作成します。 (127.0.0.1) をコンテナの内部 IP アドレスに追加します。ただし、サーバーが「localhost:51672」でリッスンしている場合、ホスト マシンからではなく、コンテナ内からのみアクセスできます。
追加情報:
以上がDocker コンテナ内の Go gRPC サーバーに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。