簡體   English   中英

Docker - Golang 找不到 package

[英]Docker - Golang cannot find package

我有一個使用 Golang 的應用程序,我想“dockerize”它,基於本教程
這是項目結構:
在此處輸入圖像描述

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)

之所以失敗,是因為 golang 程序使用的依賴在 docker 內部不可用,無法成功構建。

您正在使用 dep 進行依賴管理,即本地外部庫,但尚未在 docker 中安裝它們中的任何一個。

您需要通過在容器中安裝第一個 dep 工具來使它們在 docker 中可用。 dep 工具將確保您的 package 所需的依賴項可通過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的區別可能對您也很有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM