我有一個使用 Golang 的應用程序,我想“dockerize”它,基于本教程這是項目結(jié)構: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條經(jīng)驗 獲得超7個贊
失敗的原因是golang程序使用的依賴項在docker內(nèi)部不可用,無法成功構建。
您正在使用 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
- 1 回答
- 0 關注
- 213 瀏覽
添加回答
舉報
0/150
提交
取消