为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
LEATH 2022-07-11 14:30:20
我的码头文件: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 背景,你运行NPM INSTALL它会将所有外部包添加到node_modules与项目相同的目录中的目录中。Go中有类似的命令吗?找不到。我不想在 docker 中添加任何 PATH,因为我想从任何地方运行它。如何在 Go 中处理 Docker 中的外部包?
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

也见评论。


您可能需要创建一个go.mod功能类似于package.json. 如果您没有go.mod文件但只想开始,您可以go mod init x在目录中main.go和Dockerfile. 然后,要强制将包添加到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如果不存在则创建目录,因此您跳过mkdir

  • /app${GOPATH}使用模块时是正确的

  • COPY>> ADD(我的偏好)

  • go mod download获取定义在go.mod

  • COPY . .其他一切,可能只需要COPY main.go .

  • ENTRYPOINT>>CMD并且容器将默认运行您的二进制文件


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信