在多阶段 docker 构建中复制 ffmpeg bins

pos*_*abs 4 ffmpeg sh docker alpine-linux

我正在尝试通过多阶段 docker 构建安装 ffmpeg

这是包含 ffmpeg 二进制文件的 ffmpeg 图像

FROM jrottenberg/ffmpeg
Run Code Online (Sandbox Code Playgroud)

这是我运行网络服务器所需的 pm2 映像

FROM keymetrics/pm2:8-alpine
Run Code Online (Sandbox Code Playgroud)

我将 bin 复制到当前映像中,可以看到 ffmpeg、ffserver 和 ffprobe 都存在于 /usr/local/bin 中。

COPY --from=0 /usr/local /usr/local
Run Code Online (Sandbox Code Playgroud)

复制命令似乎成功,因为当我以交互方式运行容器时这些文件存在。

$# which ffmpeg
/usr/local/bin/ffmpeg
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行垃圾箱时,它说找不到该命令。

$# ffmpeg --version
/bin/sh: ffmpeg: not found
Run Code Online (Sandbox Code Playgroud)

Mat*_*man 7

我遇到了类似的问题,最终使用支持构建“静态”PIE 二进制文件的 alpine gcc 工具链构建了自己的没有依赖关系的二进制文件。原因是我想要没有依赖项、强化构建并支持 ASLR。

https://hub.docker.com/r/mwader/static-ffmpeg/