在多阶段Docker构建中复制ffmpeg容器

时间:2018-08-15 21:23:13

标签: docker ffmpeg sh alpine

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

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

FROM jrottenberg/ffmpeg

这是我运行Web服务器所需的pm2图像

FROM keymetrics/pm2:8-alpine

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

COPY --from=0 /usr/local /usr/local

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

$# which ffmpeg
/usr/local/bin/ffmpeg

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

$# ffmpeg --version
/bin/sh: ffmpeg: not found

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

出于兼容性原因,您需要使用相同的基本映像是很有意义的。我正在使用jrottenberg/ffmpeg(默认为ubuntu)。我应该使用jrottenberg/ffmpeg:3.3-alpine,因为我使用的是基于高山的pm2图像。

此外,构建ffmpeg依赖于某些共享库,因此复制/ usr / local不足以使其正常运行。我确定有一个更合适的解决方案,但是最终我只复制了根目录,就可以了。

# copy ffmpeg bins
COPY --from=0 / /

答案 2 :(得分:0)

此问题似乎打开了here。并且有一些解决方案,例如this onethis one