首頁 >後端開發 >Golang >為什麼我無法存取公開的 Docker 連接埠? - 對 Go 應用程式中的「接收失敗:連線由對等方重設」進行故障排除

為什麼我無法存取公開的 Docker 連接埠? - 對 Go 應用程式中的「接收失敗:連線由對等方重設」進行故障排除

Patricia Arquette
Patricia Arquette原創
2024-11-19 14:17:021063瀏覽

Why Can't I Access My Exposed Docker Port? - Troubleshooting

Docker 連接埠暴露失敗:解決「接收失敗:連線被對等方重設」

嘗試在Docker 容器中執行Go 應用程式時,在存取暴露的連接埠時遇到錯誤「Recv failure: Connection Reset by Peer」。儘管在 docker-compose.yaml 檔案中正確配置了連接埠映射,但應用程式仍然無法從外部來源存取。

此問題的根本原因在於 Go 應用程式偵聽傳入請求的方式。預設情況下,Go 應用程式在使用語法 http.ListenAndServe("localhost:8081", nil) 時會綁定到本地環回介面("localhost")。

解決方案:

在 Docker 容器內,Go 應用程式應該偵聽所有可用的接口,而不是僅限於環回接口。為此,請在 Go 應用程式中修改以下程式碼:

透過刪除「localhost」前綴,應用程式現在接受來自環回介面和外部來源的連線。此修改可確保在 docker-compose.yaml 檔案中暴露連接埠後可以存取應用程式。

以上是為什麼我無法存取公開的 Docker 連接埠? - 對 Go 應用程式中的「接收失敗:連線由對等方重設」進行故障排除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn