为了账号安全,请及时绑定邮箱和手机立即绑定

Go App 工作但在 Docker 中 - JSON 输入的意外结束

Go App 工作但在 Docker 中 - JSON 输入的意外结束

Go
SMILET 2023-03-29 17:20:31
我有以下控制器,它使用 Go 中内置的包装器进行外部 API 调用。问题是,如果我在没有 docker 的情况下运行我的服务器,端点将返回有效数据。但是,当我从 docker 中运行它时,我得到的错误是unexpected end of JSON input.回家去package controllersimport (  "fmt"  "encoding/json"  "net/http"  "time"  "strconv"  cmc "github.com/coincircle/go-coinmarketcap")type HomeController struct{}func NewHomeController() *HomeController {  return &HomeController{}}func (hc HomeController) IndexEndpoint(w http.ResponseWriter, r *http.Request) {  threeMonths := int64(60 * 60 * 24 * 90)  now := time.Now()  secs := now.Unix()  start := secs - threeMonths  end := secs  fmt.Println("Time is " + strconv.FormatInt(end, 10))  graph, _ := cmc.TickerGraph(&cmc.TickerGraphOptions{    Start: start,    End: end,    Symbol: "ETH",  })  fmt.Println(graph)  w.Header().Set("Access-Control-Allow-Origin", "*")  w.Header().Set("Content-Type", "application/json")  w.WriteHeader(http.StatusCreated)  json.NewEncoder(w).Encode(graph)}这是我的泊坞窗设置:文件FROM golang:latest AS builderCOPY . $GOPATH/src/github.com/gohuygo/cryptodemo-apiWORKDIR $GOPATH/src/github.com/gohuygo/cryptodemo-apiRUN go get ./RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o /app .FROM scratchCOPY --from=builder /app ./ENTRYPOINT ["./app"]为什么在涉及 docker 时抱怨 json 错误(即如何解决这个问题)?谢谢
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

您的 go 应用程序可能会尝试建立传出 HTTPS 连接,但scratch容器不包含验证 TLS 证书所需的 CA 证书。

在这种情况下考虑使用centurylink/ca-certsinstead of scratch。它包括 CA 证书,您的程序应该自动使用它们。


查看完整回答
反对 回复 2023-03-29
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信