我的項目結構如下: 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 關注
- 195 瀏覽
添加回答
舉報
0/150
提交
取消