如何在docker中运行golang服务器

我用 golang 设置了一个简单的服务器:


package main


import (

    "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.18


WORKDIR $GOPATH/src


COPY . .


RUN go mod download

RUN go build -o /golang-server


EXPOSE 8080


CMD ["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?


临摹微笑
浏览 147回答 1
1回答

梵蒂冈之花

问题与您在 Dockerfile 中的最后一行有关CMD ["golang-server"]。当你把它放在那里时,系统(在容器内部)试图在你的$PATH变量中找到一个名为golang-server.要解决此问题,一旦您在( )CMD ["/golang-server"]中构建应用程序,您只需将 Dockerfile 中的最后一行编辑为。最终的 Dockerfile 应该是这样的:/RUN go build -o /golang-serverFROM golang:1.18WORKDIR $GOPATH/srcCOPY . .RUN go mod downloadRUN go build -o /golang-serverEXPOSE 8080CMD ["/golang-server"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go