微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为简单的Golang应用程序构建图片时,缺少go.mod文件

如何解决为简单的Golang应用程序构建图片时,缺少go.mod文件

simple tutorial之后,我在Windows上使用Docker桌面,为golang Web服务器创建Docker应用程序。

给出代码

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

我得到:

enter image description here

为什么会这样?

解决方法

本教程跳过了使用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 modules方法,在该方法中您将需要运行

go mod init

然后将此行添加到应该由上述命令生成的go.mod文件的底部

require github.com/gin-gonic/gin v1.5.0

这是他的go.mod文件https://github.com/afdolriski/golang-docker/blob/master/go.mod

的教程示例

要创建go.sum文件,请在创建时创建该文件。

go build

我相信,如果您从dockerfile中删除此行,则可以跳过创建go.sum

COPY go.sum .

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。