猿问

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

我有一个 Go 二进制文件,我试图在 Alpine Docker 映像上运行。


这适用于 Docker Go 二进制文件。


docker run -it alpine:3.3 sh

apk add --no-cache curl


DOCKER_BUCKET=get.docker.com

DOCKER_VERSION=1.9.1

curl -fSL "https://${DOCKER_BUCKET}/builds/Linux/x86_64/docker-$DOCKER_VERSION" -o /usr/local/bin/docker

chmod +x /usr/local/bin/docker

docker help

Usage: docker [OPTIONS] COMMAND [arg...]

...

但是,对于我想安装的 Go 二进制文件。


RACK_BUCKET=ec4a542dbf90c03b9f75-b342aba65414ad802720b41e8159cf45.ssl.cf5.rackcdn.com

RACK_VERSION=1.1.0-beta1

curl -fSL "https://${RACK_BUCKET}/${RACK_VERSION}/Linux/amd64/rack" -o /usr/local/bin/rack

chmod +x /usr/local/bin/rack


rack help

sh: rack: not found


/usr/local/bin/rack help

sh: /usr/local/bin/rack: not found


ls -al /usr/local/bin/

total 43375

drwxr-xr-x    2 root     root          1024 Jan 11 18:10 .

drwxr-xr-x    8 root     root          1024 Jan 11 18:09 ..

-rwxr-xr-x    1 root     root      30222575 Jan 11 18:09 docker

-rwxr-xr-x    1 root     root      14190576 Jan 11 18:10 rack


which rack

/usr/local/bin/rack

我认为这可能与此答案有关,但在运行ldd.


ldd /usr/local/bin/rack

    /lib64/ld-linux-x86-64.so.2 (0x7fdd15cd0000)

    libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7fdd15cd0000)

    libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7fdd15cd0000)

在 Alpine Linux Docker 的路径中找不到安装的 Go 二进制文件的任何想法?


杨__羊羊
浏览 255回答 3
3回答

慕姐4208626

RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2由于 musl 和 glibc 是兼容的,您可以创建此符号链接,它将修复缺少的依赖项。

冉冉说

我用这些选项在 alpine 编译了二进制文件GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o [name of binary]有效。

噜噜哒

在 Debian 9 (Stretch) / Go 1.10.2 下构建并在 Alpine 3.7.0 下运行时:CGO_ENABLED=0 go build既没有GOOS=linux也没有GOARCH=amd6必要。
随时随地看视频慕课网APP

相关分类

Go
我要回答