为了账号安全,请及时绑定邮箱和手机立即绑定

Docker - Golang 找不到包

Docker - Golang 找不到包

Go
湖上湖 2022-06-13 16:10:49
我有一个使用 Golang 的应用程序,我想“dockerize”它,基于本教程这是项目结构:Dockerfile:FROM golang:1.12.7-alpine3.9RUN mkdir /appADD . /appWORKDIR /appRUN go build -o main .CMD ["/app/main"]当我尝试运行此命令时:docker build -t pln-monitoring .它显示了这个错误:Step 5/6 : RUN go build -o main . ---> Running in 5e3c84f1435dmain.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)
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

失败的原因是golang程序使用的依赖项在docker内部不可用,无法成功构建。


您正在使用 dep 进行依赖管理,即本地外部库,但尚未在 docker 中安装它们中的任何一个。


您需要通过在容器中使用第一个 dep 工具来使它们在 docker 中可用。dep 工具将确保包所需的依赖项可通过dep ensure


此外,理想情况下,您应该将存储库放在 $GOPATH 中,如下所述


dockerfile 将需要这些命令:


FROM golang:1.12 

RUN mkdir /go/src/app

RUN go get -u github.com/golang/dep/cmd/dep


ADD ./main.go /go/src/app

COPY ./Gopkg.toml /go/src/app


WORKDIR /go/src/app 


RUN dep ensure 

RUN go build

CMD ["./app"]

在此处阅读有关 Go 模块和差异的信息可能对您也很有用dep


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信