我在一個使用GoLang和Docker 的項目中工作,并使用 go.mod 來維護依賴關系。當我在沒有 docker 的情況下構建時,該項目工作正常,但是當我嘗試構建 docker 圖像時,出現(xiàn)此錯誤:internal/server/server.go:8:2: cannot find package "github.com/gorilla/mux" in any of: /usr/local/go/src/github.com/gorilla/mux (from $GOROOT) /go/src/github.com/gorilla/mux (from $GOPATH)cmd/root.go:7:2: cannot find package "github.com/spf13/cobra" in any of: /usr/local/go/src/github.com/spf13/cobra (from $GOROOT) /go/src/github.com/spf13/cobra (from $GOPATH)make: *** [Makefile:30: build] Error 1文件# Build StageFROM lacion/alpine-golang-buildimage:1.9.7 AS build-stageLABEL app="build-status-hub"LABEL REPO="https://github.com/MSLacerda/status-hub"ENV PROJPATH=/go/src/github.com/MSLacerda/status-hub# Because of https://github.com/docker/docker/issues/14914ENV PATH=$PATH:$GOROOT/bin:$GOPATH/binADD . /go/src/github.com/MSLacerda/status-hubWORKDIR /go/src/github.com/MSLacerda/status-hubRUN make buildDockerfile其實有更多的指令,但我只把控制臺顯示錯誤的部分放在這里。生成文件build: @echo "building ${BIN_NAME} ${VERSION}" @echo "GOPATH=${GOPATH}" go build -ldflags "-X github.com/MSLacerda/status-hub/version.GitCommit=${GIT_COMMIT}${GIT_DIRTY} -X github.com/MSLacerda/status-hub/version.BuildDate=${BUILD_DATE}" -o bin/${BIN_NAME}go.modmodule github.com/MSLacerda/status-hubrequire ( github.com/Sirupsen/logrus v1.0.6 github.com/gorilla/mux v1.7.0 github.com/spf13/cobra v0.0.3 github.com/spf13/viper v1.2.0 golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2 // indirect)
1 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
什么是快樂?
當您嘗試構建應用程序時,docker 映像中未安裝所需的 deps
為什么它出現(xiàn)在 docker 鏡像中而不是在我的本地開發(fā)環(huán)境中?
在您的本地開發(fā)環(huán)境中,您安裝/獲取所需的 deps 運行命令,如下例所示。
$?go?get?-u?github.com/go-swagger/go-swagger/cmd/swagger
但是每個容器/圖像都將是一個空的/干凈的環(huán)境。您需要告知首先安裝 deps 所需的 docker 容器。
解決方案
生成文件示例
.PHONY:?setup setup:?@echo?Installing?dependencies:? ???go?get?-u?github.com/go-swagger/go-swagger/cmd/swagger .PHONY:?build build:?setup? ???go?build?-o?$(BINARY)?$(APP_FILE)
make build
然后需要調用該命令來創(chuàng)建您的圖像,而不是當前使用的 go build。不要使用
go get
每個依賴項的命令,而是使用 go dep 管理器來執(zhí)行它。按照這個例子。
生成文件
.PHONY:?setup setup:?@echo?Installing?dependencies: ????dep?ensure
- 1 回答
- 0 關注
- 297 瀏覽
添加回答
舉報
0/150
提交
取消