Golang,Docker,外部包,找不到路径

我的码头文件:


FROM golang:1.14

RUN mkdir /app

ADD . /app

WORKDIR /app

RUN 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 背景,你运行NPM INSTALL它会将所有外部包添加到node_modules与项目相同的目录中的目录中。


Go中有类似的命令吗?找不到。我不想在 docker 中添加任何 PATH,因为我想从任何地方运行它。


如何在 Go 中处理 Docker 中的外部包?


LEATH
浏览 116回答 1
1回答

红糖糍粑

也见评论。您可能需要创建一个go.mod功能类似于package.json. 如果您没有go.mod文件但只想开始,您可以go mod init x在目录中main.go和Dockerfile. 然后,要强制将包添加到go.mod,您可以go run .(或go run main.go)。然后:FROM golang:1.15WORKDIR /appCOPY go.mod .RUN go mod downloadCOPY . .RUN go build -o main .ENTRYPOINT ["/app/main"]我建议升级到 Go 1.15WORKDIR如果不存在则创建目录,因此您跳过mkdir/app在${GOPATH}使用模块时是正确的COPY>> ADD(我的偏好)go mod download获取定义在go.modCOPY . .其他一切,可能只需要COPY main.go .ENTRYPOINT>>CMD并且容器将默认运行您的二进制文件
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go