Golang构build不起作用的docker工人

我对golang有点新东西,我仍然试图让我的go run main.go围绕着go run main.gogo build [-o] main.go

我已经build立了一个小杜松子酒应用程序来与docker和kubernetes本地尝试。

 package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/healthz", func(c *gin.Context) { c.String(http.StatusOK, "") }) r.GET("/readinez", func(c *gin.Context) { c.String(http.StatusOK, "") }) r.Run() // listen and serve on 0.0.0.0:8080 } 

该应用程序运行非常好, go run main.go

我的Dockerfile:

 FROM golang:latest RUN mkdir /app ADD . /app/ WORKDIR /app RUN go build -o main . CMD ["/app/main"] 

它失败:

在这里输入图像说明

这是在那里,当我go run main.go也是go run main.go 。 有什么不同来build立?

我不确定在这里做什么。 来自节点背景。 这确实会让一个noobie有点疯狂…当然有一个简单的解决scheme。

该程序在您的机器上成功,因为您可能已经安装了杜松子酒包。 你不能假设一个容器将会拥有它,并且应该明确地安装它。 只需在go build行之前将下面的行添加到您的dockerfile中go build

 RUN go get github.com/gin-gonic/gin 

它可能失败了,因为你使用杜松子酒,而图书馆不能在容器内find。 尝试使用glide或godep来销售第三方库。

 go get github.com/gin-gonic/gin 

那么它应该工作。