如何为Docker Alpine映像构建静态Go二进制文件?

和:

我想构建一个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仍然需要安装。)

伊恩·邓肯(Iain Duncan):

是的,您经常需要添加额外的资源文件(例如证书),尤其是在使用像alpine这样的最小发行版时,但是通常可以在这样小的发行版上运行go应用程序这一事实也被视为一个优势。

要添加证书,这是一个很好的说明,概述了如何在临时容器上进行操作:

https://blog.codeship.com/building-minimal-docker-containers-for-go-applications/

如果您想坚持使用Alpine,则可以安装此软件包以获取它们:

https://pkgs.alpinelinux.org/package/v3.7/main/x86/ca-certificates

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为golang静态二进制文件构建,部署,推送docker映像

用于构建Golang二进制文件的Docker映像

在Docker Alpine上构建Git时如何减小Git二进制文件的大小?

在Alpine Linux Docker的路径中找不到已安装的Go二进制文件

Qemu使用Docker映像注册二进制文件

如何使用旧内核为GNU / Linux安装构建静态二进制文件?

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

如何静态链接使用crypto / tls的Go二进制文件?

如何创建在每个发行版上运行的静态Go二进制文件?

如何使用gccgo构建完整的go程序二进制文件?

如何在Go中构建发行版二进制文件?

如何制作coreutils的静态二进制文件?

如何使用Cargo构建多个二进制文件?

如何为从二进制文件安装的 docker 配置 systemctl 服务?

如何为Visual Studio Code构建Debian和RPM二进制文件?

如何为没有嵌入式二进制文件的iOS构建动态框架?

如何扩展没有 sh 二进制文件的 Docker 映像

如何在Go中读取二进制文件

如何执行此Go二进制文件?

如何gitignore Go二进制文件?

二进制文件如何“二进制”?

在 ubuntu docker 映像中找不到“udevd”二进制文件

安装示例,二进制文件和Docker映像在Mac上不起作用

为什么 Docker 映像中无法识别一种二进制文件?

如何制作vorbis-tools ogg123的静态二进制构建?

如何运行使用go二进制文件创建的Docker容器?

如何从二进制文件在Docker上运行Go Server

MSBuild - 无论构建配置或框架如何,构建后捕获二进制文件?

如何下载二进制文件