我正在尝试通过多阶段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
答案 0 :(得分:1)
我遇到了类似的问题,最终使用支持构建“静态” PIE二进制文件的alpine gcc工具链构建了没有依赖关系的我自己的二进制文件。原因是我不需要任何依赖关系,加强了构建并还支持ASLR。
答案 1 :(得分:0)
出于兼容性原因,您需要使用相同的基本映像是很有意义的。我正在使用jrottenberg/ffmpeg
(默认为ubuntu)。我应该使用jrottenberg/ffmpeg:3.3-alpine
,因为我使用的是基于高山的pm2图像。
此外,构建ffmpeg依赖于某些共享库,因此复制/ usr / local不足以使其正常运行。我确定有一个更合适的解决方案,但是最终我只复制了根目录,就可以了。
# copy ffmpeg bins
COPY --from=0 / /
答案 2 :(得分:0)