去在docker中构建:/ go / bin中意外的二进制文件

时间:2019-02-13 18:25:50

标签: docker go

根据此帖子:What does go build build?

go build构建二进制文件并将其保留在当前目录中,而go install将二进制文件移至$GOPATH/bin

这样可以在我的机器上工作。但是,我有一个Dockerfile:

FROM golang:latest
ADD . /go/src/myapp
WORKDIR /go/src/myapp
RUN go get .
RUN go build 
RUN ls /go/bin # shows myapp!!
ENTRYPOINT ["/go/bin/myapp"] #works!!

这里应该没有区别。预期结果是/go/bin为空,二进制文件myapp/go/src/myapp/myapp 相反,我看到该构建就像安装一样工作,并且二进制文件显示在/ go / bin中。为什么?

1 个答案:

答案 0 :(得分:1)

go get命令正在将软件包安装到/ go / bin中。如果您不想安装当前的软件包,请在下载依赖项后通过-d停止。

  

-d标志指示下载软件包后停止;也就是说,它指示不要安装软件包。

https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies