我的码头档案:
FROM golang:1.14
RUN mkdir /app
ADD . /app
WORKDIR /app
RUN go build -o main .
CMD ["/app/main"]
Run Code Online (Sandbox Code Playgroud)
错误:
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)
Run Code Online (Sandbox Code Playgroud)
我在 GOPATH 中的路径是
GOPATH=/Users/pstrom/go
Run Code Online (Sandbox Code Playgroud)
我来自 javascript 背景,在那里运行NPM INSTALL,它将所有外部包添加到node_modules与项目相同的目录中的目录中。
Go中有没有类似的命令?找不到任何。我不想在 docker 中添加任何 PATH,因为我想从任何地方运行它。
如何在 Go 中处理 Docker 中的外部包?
也看评论。
您可能需要创建一个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"]
Run Code Online (Sandbox Code Playgroud)
WORKDIR 如果不存在则创建目录,因此您可以跳过 mkdir/app是之外${GOPATH}使用模块时,这是正确的COPY>> ADD(我的偏好)go mod download 获取定义的依赖项 go.modCOPY . . 其他一切,可能只需要 COPY main.go .ENTRYPOINT>>CMD并且容器将默认运行您的二进制文件| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |