如何解决为简单的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
我得到:
为什么会这样?
解决方法
本教程跳过了使用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 举报,一经查实,本站将立刻删除。