Docker 端口暴露失败:解决“接收失败:连接被对等方重置”
尝试在 Docker 容器中运行 Go 应用程序时,在访问暴露的端口时遇到错误“Recv failure: Connection Reset by Peer”。尽管在 docker-compose.yaml 文件中正确配置了端口映射,但应用程序仍然无法从外部源访问。
此问题的根本原因在于 Go 应用程序侦听传入请求的方式。默认情况下,Go 应用程序在使用语法 http.ListenAndServe("localhost:8081", nil) 时会绑定到本地环回接口("localhost")。
解决方案:
在 Docker 容器内,Go 应用程序应该侦听所有可用的接口,而不是仅限于环回接口。为此,请在 Go 应用程序中修改以下代码:
// Original code http.ListenAndServe("localhost:8081", nil) // Updated code http.ListenAndServe(":8081", nil)
通过删除“localhost”前缀,应用程序现在接受来自环回接口和外部源的连接。此修改确保在 docker-compose.yaml 文件中暴露端口后可以访问应用程序。
以上是为什么我无法访问公开的 Docker 端口? - 对 Go 应用程序中的'接收失败:连接由对等方重置”进行故障排除的详细内容。更多信息请关注PHP中文网其他相关文章!