我的码头文件: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
并且容器将默认运行您的二进制文件
- 1 回答
- 0 关注
- 115 浏览
添加回答
举报
0/150
提交
取消