ローカル Docker コンテナーで実行されている Go GRPC サーバーに接続できません
ローカルで実行されている GRPC サービスに対して GRPC クライアントを実行すると、サーバーのリスニングエンドポイントを考慮することが重要です。デフォルトでは、ホスト名または IP アドレス (この場合はローカルホスト) を指定すると、サーバーはその特定のアドレスでのみリッスンします。
Docker コンテナーのコンテキストでは、ローカルホスト (127.0.0.1) でリッスンします。コンテナの外部からアクセスできないため問題があります。 Docker はホスト マシン上のポートを公開する可能性がありますが、サーバーはコンテナ内の 127.0.0.1 でのみリッスンします。
この問題を解決するには、リッスンするエンドポイントを *:51672 に変更し、サーバーにリッスンするように指示する必要があります。コンテナ内の使用可能なすべての IP アドレスで。これにより、コンテナはホスト マシンから転送されたトラフィックを公開ポートで受信できるようになります。
問題を確認するには、次のコマンドを使用して iptables ルールを調べることができます。
iptables -n -L iptables -t nat -n -L
これらのルールポート転送を実装するために Docker によって作成されます。使用可能なすべての IP アドレスをリッスンするようにサーバーを構成すると、クライアントは Docker コンテナ内で実行されている GRPC サービスに正常に接続できます。
以上がGRPC クライアントが Docker 化されたサーバーに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。