亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

撥打 tcp 127.0.0.1:8000:連接:連接被拒絕 golang docker 容器

撥打 tcp 127.0.0.1:8000:連接:連接被拒絕 golang docker 容器

Go
臨摹微笑 2022-06-27 17:04:00
我正在嘗試使用 GO 從一個項目向另一個項目發出 http 請求。發出請求的項目具有以下 dockerfile:FROM golang:alpine as builderWORKDIR /buildCOPY . .RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o main .FROM scratchWORKDIR /appCOPY --from=builder /build .CMD ["./main"]正在等待請求的項目正在 localhost:8000 上運行,它具有以下 dockerfile:FROM golang:1.13.8 AS build-envADD . /dockerdevWORKDIR /dockerdevRUN go get -d -v ./...RUN go build -o /server# Final stageFROM debian:busterEXPOSE 8000WORKDIR /COPY --from=build-env /server /CMD ["/server"]當我做resp, err := http.Post("http://localhost:8000/orders", "application/json", bytes.NewBuffer(requestBody))它給了我以下錯誤撥打 tcp 127.0.0.1:8000:連接:連接被拒絕我是 docker 新手,所以歡迎任何改進!
查看完整描述

2 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

擴展我的評論。您的客戶端代碼的網絡地址將不起作用:

resp, err := http.Post("http://localhost:8000/orders", "application/json", bytes.NewBuffer(requestBody)) // broken

因為它實際上是在自言自語(localhost指的是客戶端docker 容器——而不是主機操作系統)。


將這兩個容器暴露給您的主機操作系統的最快方法 - 出于測試目的 - 如下所示:

docker run -it --rm -p 8000:8000 dockweb  # server container
docker run -it --rm --net host dockcli    # client container

除了瑣碎的測試之外,這很快就會變得笨拙。所以我建議使用docker-compose 之類的東西,它可以讓你輕松地鏈接容器及其網絡。


查看完整回答
反對 回復 2022-06-27
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

嘗試使用0.0.0.0而不是localhost. 這應該可以解決連接被拒絕錯誤。



查看完整回答
反對 回復 2022-06-27
  • 2 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號