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

如何在docker中运行golang服务器

如何在docker中运行golang服务器

Go
临摹微笑 2023-02-06 10:33:22
我用 golang 设置了一个简单的服务器:package mainimport (    "golang-server/database"    "golang-server/helper"    "log"    "net/http")func main() {    database.Connect()    port := helper.GetPort()    SetupRoutes()    log.Printf("connect to http://localhost:%s/ for GraphQL playground", port)    log.Fatal(http.ListenAndServe(":"+port, router))}这是我的 dockerfile 的样子:FROM golang:1.18WORKDIR $GOPATH/srcCOPY . .RUN go mod downloadRUN go build -o /golang-serverEXPOSE 8080CMD ["golang-server"]我在主目录中运行这些 docker 命令:docker build . -t golang-server docker run --network=golang-server --name=golang-server golang-server但是,当我运行时出现此错误:docker:来自守护进程的错误响应:创建垫片任务失败:OCI 运行时创建失败:runc 创建失败:无法启动容器进程:exec:“golang-server”:在 $PATH 中找不到可执行文件:未知。我应该如何设置 dockerfile 才能成功部署到 docker?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

问题与您在 Dockerfile 中的最后一行有关CMD ["golang-server"]。当你把它放在那里时,系统(在容器内部)试图在你的$PATH变量中找到一个名为golang-server.


要解决此问题,一旦您在( )CMD ["/golang-server"]中构建应用程序,您只需将 Dockerfile 中的最后一行编辑为。最终的 Dockerfile 应该是这样的:/RUN go build -o /golang-server


FROM golang:1.18


WORKDIR $GOPATH/src


COPY . .


RUN go mod download

RUN go build -o /golang-server


EXPOSE 8080


CMD ["/golang-server"]


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

添加回答

举报

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