因此,
官方的Go语言构建容器基于Alpine。
alpine使用musl作为libc而不是glibc。
我需要在一个可以在Ubuntu上运行的容器中构建一个Go可执行文件,Ubuntu使用glibc。
我该怎么办
1.使官方GoLang构建容器使用glibc或
1.在基于Ubuntu的容器上构建我的GoLang项目
我不能使用Disable CGO解决方案,因为我的Go代码是一个FUSE驱动程序,它需要CGO
因此,
官方的Go语言构建容器基于Alpine。
alpine使用musl作为libc而不是glibc。
我需要在一个可以在Ubuntu上运行的容器中构建一个Go可执行文件,Ubuntu使用glibc。
我该怎么办
1.使官方GoLang构建容器使用glibc或
1.在基于Ubuntu的容器上构建我的GoLang项目
我不能使用Disable CGO解决方案,因为我的Go代码是一个FUSE驱动程序,它需要CGO
2条答案
按热度按时间2lpgd9681#
golang:latest
镜像是基于debian bullseye的,除了使用这个镜像来构建二进制文件之外,你不需要做任何事情,这样它就可以在ubuntu上运行了。只需用这一行来启动您的dockerfile,而不是您当前正在使用的行。
wtzytmuj2#
从Ubuntu的基础镜像开始,在里面安装golang,然后添加你发现的依赖项,如果你不太关心go的版本,那么Ubuntu的官方软件包就可以了,你不必下载官方的go发行版。
这适用于我们(linux / mac用户):
停靠文件
要运行它:
docker.sh
例如:
我们的ldd deps如下所示: