2 回答
TA贡献1946条经验 获得超4个赞
alpine不提供glibc。alpine之所以这么小,是因为它使用了一个名为musl.libc.org的精简版 libstdc 。
因此,我们将使用ldd命令检查静态链接的依赖项。
$ docker run -it <image name> /bin/sh
$ cd /go/bin
$ ldd scratch # or the excutable you are calling-> ldd <executable>
检查链接的静态文件,它们是否存在于该版本的 alpine 上?如果不从二进制文件的角度来看,它没有找到文件——并且会报告File not found
.
以下步骤取决于缺少哪些二进制文件,您可以在互联网上查找如何安装它们。
添加RUN apk add --no-cache libc6-compat
到您的 Dockerfile 以添加libstdc
一些Golang
基于 alpine 图像的 Dockerfile。
在您的情况下,解决方案是
禁用 CGO:
CGO_ENABLED=0
在构建时使用或添加
RUN apk add --no-cache libc6-compat
到您的Dockerfile
或不使用
golang:alpine
TA贡献1805条经验 获得超9个赞
我错误地用程序要读取的 txt 文件编译 go 程序。这就是为什么程序编译为二进制 exec 后文件路径不正确的原因。以防万一有人像我一样犯了同样的错误,这是我的解决方案之一。我通过将文本文件移出我的项目并使用 env 变量指向我想要的路径来解决问题。
- 2 回答
- 0 关注
- 86 浏览
添加回答
举报