无法在 dockerfile 中构建 Golang

我的项目结构如下: https ://i.stack.imgur.com/SqqDh.png


这是我的 Dockerfile:


FROM golang:1.19


ADD . /go/src/myapp


WORKDIR /go/src/myapp


RUN go mod init cloudmeta


RUN go get github.com/go-sql-driver/mysql

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


RUN go build -o bin/cloudmeta


CMD [ "bin/cloudmeta" ]

当我尝试构建我的 docker-container 时出现此错误:


package cloudmeta/backend/handlers is not in GOROOT (/usr/local/go/src/cloudmeta/backend/handlers)


慕娘9325324
浏览 178回答 1
1回答

ABOUTYOU

在 docker 中构建 Go 代码时,你不应该使用go mod init. 查看来自 docker docs的以下示例dockerfile:# syntax=docker/dockerfile:1FROM golang:1.16-alpineWORKDIR /appCOPY go.mod ./COPY go.sum ./RUN go mod downloadCOPY *.go ./RUN go build -o /docker-gs-pingEXPOSE 8080CMD [ "/docker-gs-ping" ]docker docs 指南更深入地总结了一些事情:您应该将您的go.mod和go.sum文件复制到图像中的项目目录中。现在您可以运行go mod download命令来安装所需的 go 模块。然后你需要将你的源代码复制到图像中。现在您可以使用go build命令编译源代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go