Docker 为简单Golang应用程序生成映像时,go.mod文件丢失
在为golang web服务器创建Docker应用程序之后,我正在Windows上使用Docker Desktop 鉴于代码:Docker 为简单Golang应用程序生成映像时,go.mod文件丢失,docker,go,Docker,Go,在为golang web服务器创建Docker应用程序之后,我正在Windows上使用Docker Desktop 鉴于代码: package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run(":3000")
}
和Dockerfile:
FROM golang:alpine
# Set necessary environmet variables needed for our image
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
# Move to working directory /build
WORKDIR /build
# Copy and download dependency using go mod
COPY go.mod .
COPY go.sum .
RUN go mod download
# Copy the code into the container
COPY . .
# Build the application
RUN go build -o main .
# Move to /dist directory as the place for resulting binary folder
WORKDIR /dist
# Copy binary from build to main folder
RUN cp /build/main .
# Export necessary port
EXPOSE 3000
# Command to run when starting the container
CMD ["/dist/main"]
使用以下命令生成图像时:
docker build . -t go-dock
我得到:
为什么会出现这种情况?本教程跳过了使用go模块的步骤 一种选择是删除这些行
# Copy and download dependency using go mod
COPY go.mod .
COPY go.sum .
RUN go mod download
并将其替换为
RUN go get -u github.com/gin-gonic/gin
另一个更推荐的选择是坚持使用go模块方法,您需要在其中运行
go mod init
然后将这一行添加到go.mod文件的底部,该文件本应通过上述命令生成
require github.com/gin-gonic/gin v1.5.0
下面是他的go.mod文件的教程示例
要创建go.sum文件,请在创建时创建该文件
go build
如果从dockerfile中删除这一行,我相信您可以跳过创建go.sum
COPY go.sum .
谢谢你花时间回答