Dan*_*Dan 6 go docker alpine-linux
我想构建一个 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"
Run Code Online (Sandbox Code Playgroud)
构建将在 Alpine 3.7 docker 映像上运行的 Go 二进制文件的规范方法(如果存在)是什么?apk如果这会让事情变得更高效/更容易,我很乐意用来将软件包安装到 Alpine 映像。(相信我ca-certificates无论如何都需要安装。)
是的,你经常需要添加额外的资源文件,比如证书,尤其是在使用像 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
| 归档时间: |
|
| 查看次数: |
11646 次 |
| 最近记录: |