我的碼頭文件:FROM golang:1.14RUN mkdir /appADD . /appWORKDIR /appRUN go build -o main .CMD ["/app/main"]錯誤:main.go:11: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)我在 GOPATH 中的 PATH 是GOPATH=/Users/pstrom/go我來自 javascript 背景,你運(yùn)行NPM INSTALL它會將所有外部包添加到node_modules與項(xiàng)目相同的目錄中的目錄中。Go中有類似的命令嗎?找不到。我不想在 docker 中添加任何 PATH,因?yàn)槲蚁霃娜魏蔚胤竭\(yùn)行它。如何在 Go 中處理 Docker 中的外部包?
1 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個贊
也見評論。
您可能需要創(chuàng)建一個go.mod功能類似于package.json. 如果您沒有g(shù)o.mod文件但只想開始,您可以go mod init x在目錄中main.go和Dockerfile. 然后,要強(qiáng)制將包添加到go.mod,您可以go run .(或go run main.go)。
然后:
FROM golang:1.15
WORKDIR /app
COPY go.mod .
RUN go mod download
COPY . .
RUN go build -o main .
ENTRYPOINT ["/app/main"]
我建議升級到 Go 1.15
WORKDIR
如果不存在則創(chuàng)建目錄,因此您跳過mkdir
/app
在${GOPATH}
使用模塊時是正確的COPY
>>ADD
(我的偏好)go mod download
獲取定義在go.mod
COPY . .
其他一切,可能只需要COPY main.go .
ENTRYPOINT
>>CMD
并且容器將默認(rèn)運(yùn)行您的二進(jìn)制文件
- 1 回答
- 0 關(guān)注
- 129 瀏覽
添加回答
舉報(bào)
0/150
提交
取消