【发布时间】:2018-06-30 04:11:30
【问题描述】:
我想构建一个 Go 1.9.2 二进制文件并在 Docker Alpine 映像上运行它。我写的 Go 代码没有调用任何 C 代码。它还使用net 包。不幸的是,它并没有听起来那么简单,因为 Go 似乎并没有一直构建静态二进制文件。当我尝试执行二进制文件时,我经常会收到关于为什么二进制文件没有执行的神秘消息。互联网上有很多关于此的信息,但大多数信息最终都是人们使用试错来使他们的二进制文件工作。
到目前为止,我发现了以下作品,但是我不知道为什么,如果它是最佳的还是可以简化的。
env GOOS=linux GARCH=amd64 go install -v -a -tags netgo -installsuffix netgo -ldflags "-linkmode external -extldflags -static"
构建将在 Alpine 3.7 docker 映像上运行的 Go 二进制文件的规范方法是什么(如果存在)?我很高兴使用apk 将软件包安装到 Alpine 映像,如果这样可以使事情更高效/更容易。 (相信我还是需要安装ca-certificates。)
【问题讨论】: