我的项目结构如下: https ://i.stack.imgur.com/SqqDh.png这是我的 Dockerfile:FROM golang:1.19ADD . /go/src/myappWORKDIR /go/src/myappRUN go mod init cloudmetaRUN go get github.com/go-sql-driver/mysqlRUN go get -u github.com/gin-gonic/ginRUN go build -o bin/cloudmetaCMD [ "bin/cloudmeta" ]当我尝试构建我的 docker-container 时出现此错误:package cloudmeta/backend/handlers is not in GOROOT (/usr/local/go/src/cloudmeta/backend/handlers)
1 回答

ABOUTYOU
TA贡献1812条经验 获得超5个赞
在 docker 中构建 Go 代码时,你不应该使用go mod init
. 查看来自 docker docs的以下示例dockerfile:
# syntax=docker/dockerfile:1
FROM golang:1.16-alpine
WORKDIR /app
COPY go.mod ./
COPY go.sum ./
RUN go mod download
COPY *.go ./
RUN go build -o /docker-gs-ping
EXPOSE 8080
CMD [ "/docker-gs-ping" ]
docker docs 指南更深入地总结了一些事情:
您应该将您的
go.mod
和go.sum
文件复制到图像中的项目目录中。现在您可以运行
go mod download
命令来安装所需的 go 模块。然后你需要将你的源代码复制到图像中。
现在您可以使用
go build
命令编译源代码。
- 1 回答
- 0 关注
- 177 浏览
添加回答
举报
0/150
提交
取消