Docker - Golang 找不到包

我有一个使用 Golang 的应用程序,我想“dockerize”它,基于本教程
这是项目结构:

http://img1.mukewang.com/62a6f11e0001000503190290.jpg

Dockerfile:


FROM golang:1.12.7-alpine3.9

RUN mkdir /app

ADD . /app

WORKDIR /app

RUN go build -o main .

CMD ["/app/main"]

当我尝试运行此命令时:


docker build -t pln-monitoring .

它显示了这个错误:


Step 5/6 : RUN go build -o main .

 ---> Running in 5e3c84f1435d

main.go:12:2: cannot find package "github.com/geshtng/pln-monitoring/middleware" in any of:

        /usr/local/go/src/github.com/geshtng/pln-monitoring/middleware (from $GOROOT)

        /go/src/github.com/geshtng/pln-monitoring/middleware (from $GOPATH)

main.go:13:2: cannot find package "github.com/geshtng/pln-monitoring/pkg/common/config" in any of:

        /usr/local/go/src/github.com/geshtng/pln-monitoring/pkg/common/config (from $GOROOT)

        /go/src/github.com/geshtng/pln-monitoring/pkg/common/config (from $GOPATH)


湖上湖
浏览 195回答 1
1回答

人到中年有点甜

失败的原因是golang程序使用的依赖项在docker内部不可用,无法成功构建。您正在使用 dep 进行依赖管理,即本地外部库,但尚未在 docker 中安装它们中的任何一个。您需要通过在容器中使用第一个 dep 工具来使它们在 docker 中可用。dep 工具将确保包所需的依赖项可通过dep ensure此外,理想情况下,您应该将存储库放在 $GOPATH 中,如下所述dockerfile 将需要这些命令:FROM golang:1.12 RUN mkdir /go/src/appRUN go get -u github.com/golang/dep/cmd/depADD ./main.go /go/src/appCOPY ./Gopkg.toml /go/src/appWORKDIR /go/src/app RUN dep ensure RUN go buildCMD ["./app"]在此处阅读有关 Go 模块和差异的信息可能对您也很有用dep
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go