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

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

我在為 golang api 構建 docker 時遇到問題

我在為 golang api 構建 docker 時遇到問題

Go
森林海 2022-05-05 17:31:40
我是碼頭工人的新手。我正在嘗試使用回顯服務器在 go 中實現 RESTfull api。我的代碼在我運行時運行良好,main.go但我無法使用 docker 運行它。這是我的回聲服務器:r := router.Router()r.Logger.Fatal(r.Start("localhost:8080"))這是我的 Dockerfile:FROM golang:latest AS buildENV GO111MODULE=on \    CGO_ENABLED=1#Maintainer infoLABEL maintainer="Saman Hoseini"WORKDIR /appCOPY go.mod .COPY go.sum .RUN go mod downloadCOPY . .RUN go build -o main .#this step is for CGO librariesRUN ldd main | tr -s '[:blank:]' '\n' | grep '^/' | \    xargs -I % sh -c 'mkdir -p $(dirname ./%); cp % ./%;'RUN mkdir -p lib64 && cp /lib64/ld-linux-x86-64.so.2 lib64/#Second stage of buildFROM alpine:latestRUN apk update && apk --no-cache add ca-certificates \    sqliteCOPY --from=build /app ./EXPOSE 8080ENTRYPOINT ["./main"]構建后,當我運行容器時,我面臨 curl 失?。? docker run -d -p 8080:8080 my-docker$ curl http://localhost:8080curl:(56)Recv失?。簩Φ确街刂眠B接我該如何解決這個問題?
查看完整描述

1 回答

?
慕無忌1623718

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

您需要在容器的外部端口上運行您的應用程序。

r := router.Router()
r.Logger.Fatal(r.Start(":8080"))

發生這種情況是因為該EXPOSE 8080命令轉發在容器的外部端口(不是內部,如 localhost)上打開的應用程序端口。

在此之后, command docker run -d -p 8080:8080 my-docker,更準確地說是一個 parameter -p,將外部端口從您的容器轉發到您機器上的外部端口。


查看完整回答
反對 回復 2022-05-05
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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