我有一个基于composer:1.8
(基于php:7-alpine
)的docker容器。
在容器内,我通过php下载了tar.gz
,将其解压缩并解压缩,效果很好。
它包含我要执行的Go二进制文件。
在docker容器中执行二进制文件时,出现以下错误消息:./bin/<binary>: No such file or directory
。在主机上,我可以很好地执行在Docker容器中下载的二进制文件。
如果很重要,我可以使用以下命令启动docker容器:docker run -it --rm --volume=$PWD:/usr/src/myapp -u $(id -u):$(id -g) --name ec ec /bin/bash
我还尝试在安装readelf -a <binary>
后运行它,但这没有任何效果。
bash-4.4$ ls -l <binary> && echo userid: $(id -u) && echo groupid: $(id -g) && uname -om && ./<binary>
-rwxr-xr-x 1 1000 985 7582050 Mar 15 17:09 <binary>
userid: 1000
groupid: 985
x86_64 Linux
bash: ./<binary>: No such file or directory
我该怎么做才能使这项工作成功?
答案 0 :(得分:2)
这是因为二进制文件是使用glibc
编译的,而alpine是使用musl
编译的。
我已经解决了在构建时将二进制文件CGO_ENABLED=0
传递给我的问题