首页 >后端开发 >Golang >为什么我无法访问公开的 Docker 端口? - 对 Go 应用程序中的'接收失败:连接由对等方重置”进行故障排除

为什么我无法访问公开的 Docker 端口? - 对 Go 应用程序中的'接收失败:连接由对等方重置”进行故障排除

Patricia Arquette
Patricia Arquette原创
2024-11-19 14:17:021054浏览

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 应用程序中修改以下代码:

// Original code
http.ListenAndServe("localhost:8081", nil)

// Updated code
http.ListenAndServe(":8081", nil)

通过删除“localhost”前缀,应用程序现在接受来自环回接口和外部源的连接。此修改确保在 docker-compose.yaml 文件中暴露端口后可以访问应用程序。

以上是为什么我无法访问公开的 Docker 端口? - 对 Go 应用程序中的'接收失败:连接由对等方重置”进行故障排除的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn