首頁 > 後端開發 > Golang > 為什麼我的gRPC客戶端無法連接到Docker容器中的Go伺服器?

為什麼我的gRPC客戶端無法連接到Docker容器中的Go伺服器?

Mary-Kate Olsen
發布: 2024-12-21 11:55:12
原創
888 人瀏覽過

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

連接到在本地Docker 容器中運行的Go GRPC 服務器

問題:

嘗試時將gRPC 用戶端連接到在Docker 容器中執行的Go gRPC伺服器時,會發生錯誤:遇到:

transport: http2Client.notifyError got notified that the client transport was broken EOF.
FATA[0000] rpc error: code = Internal desc = transport is closing
登入後複製

解決方案:

當gRPC 伺服器設定為偵聽特定主機名稱或IP 位址(例如localhost )時,會出現此問題。在 Docker 中,本機主機位址僅指源自容器本身內部的環回連線。

要解決此問題,應將伺服器配置為偵聽容器的所有可用 IP 位址。這可以透過將監聽端點從:

endpoint := "localhost:51672"
登入後複製

更改為:

endpoint := ":51672"
登入後複製

透過使用「:」作為監聽位址,伺服器將綁定到所有介面和IP容器內的位址,允許轉送和建立外部連線。

其他資訊:

  • Docker 建立 iptables 規則以將連線轉送到容器內公開的連接埠。
  • 指派給容器的 IP 位址可以使用指令 ip addr ls 檢視。
  • 在容器內運行客戶端時,可以成功連接到伺服器,因為客戶端和伺服器都在同一網路中介面。

以上是為什麼我的gRPC客戶端無法連接到Docker容器中的Go伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板