docker - 容器化 API 套接字挂起
问题描述
我刚刚完成了一个 Go REST API 的工作,我想将我的代码移动到一个容器中。Error: socket hang up
我已经完成了这一点,但是由于 error:被抛出,我无法通过邮递员到达我的端点。
根据这个SO thread,这可能是由我的防火墙引起的,运行后ufw status
我注意到我的防火墙没有启动,所以我不确定是什么导致了这个错误。
我的应用程序似乎运行正常,我在本地机器上使用端口 8080 映射了容器。
└─(19:14:04 on master ✭)──> docker ps ──(Tue,Feb02)─┘
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b001f19e2957 go-library "./library" 15 minutes ago Up 15 minutes 0.0.0.0:8080->8080/tcp cranky_kare
我还确保我的请求正在使用此端口。
GET http://localhost:8080/books/3
Error: socket hang up
Request Headers
User-Agent: PostmanRuntime/7.26.10
Accept: */*
Postman-Token: 190a5849-b859-4324-a65e-37a7b69b49fb
Host: localhost:8080
Accept-Encoding: gzip, deflate, br
解决方案
我的问题是我正在启动服务器127.0.0.1
并且端口映射没有指向这个接口。在所有接口()上启动它对0.0.0.0
我有用:
addr := fmt.Sprintf("0.0.0.0:%v", settings.Port)
server := &http.Server{
Addr: addr,
Handler: app.Router,
IdleTimeout: 120 * time.Second,
ReadTimeout: 5 * time.Second,
WriteTimeout: 5 * time.Second,
}
推荐阅读
- r - 展开列以查找最大/最小观测值
- python - 使用 pandas 将 Unix 13 位转换为日期时间/时间戳格式
- flutter - 如何在flutter中使用firestore刷新streamBuilder
- javascript - 如何将自定义值传递给现有函数(不更改函数)?
- sql - 过滤仅包含数字(不包括字母)的 ID
- vb.net - 如何读取 Outlook RecurrencePattern.DayOfWeekMask 的值?
- regex - 正则表达式不应包含字符,除非
- prometheus - 获取警报处于状态的秒数
- node.js - 安装本地包时如何修复纱线错误?
- java - 我有一个变量,但 Java 将它们视为两个