我正在寻找一种在 UBI8(ubi-minimal)docker 镜像中安装 ffmpeg 的简单方法。
我尝试在 dockerfile 中运行以下内容:
RUN microdnf upgrade
RUN microdnf install ffmpeg
我得到:
------
> [7/8] RUN microdnf install ffmpeg:
#11 0.375
#11 0.375 (microdnf:1): librhsm-WARNING **: 07:58:19.229: Found 0 entitlement certificates
#11 0.375
#11 0.375 (microdnf:1): librhsm-WARNING **: 07:58:19.230: Found 0 entitlement certificates
#11 0.519 error: No package matches 'ffmpeg'
------
executor failed running [/bin/sh -c microdnf install ffmpeg]: exit code: 1
如何在UBI 8上轻松安装ffmpeg?
注意:我尝试参考网络上的大量参考资料来解释如何做到这一点,例如 this one 和 this 以及,但 UBI 的工作方式似乎有所不同。
简短回答:你不能... 即使您在 ffmpeg 所在的位置启用 rpmfusion(如您指向的链接中所示),作为依赖项的 SDL2 包在 UBI 行(UBI8 或 UBI9)中也不可用。即使添加 Epel、CodeReadyBuilder、...SDL2 也是您无法获得的缺失项。
您将获得的最接近 UBI 的东西是通过 CentOS Stream。这就是我在很多 UBI 不起作用的情况下所做的事情(而且有很多......)。由于它与 RHEL 几乎相同,因此需要支持的人可以使用几乎相同的 Dockerfile 直接构建。
现在,如果您不分发正在构建的内容并且拥有正确的 RHEL 许可证,您始终可以从 UBI8 开始构建 Dockerfile、注册、添加 ffmpeg(这将起作用,因为您将从注册的 RHEL 存储库中获取 SDL2),并注销。有点像弗兰肯斯坦镜像...但是如果你有 RHEL 许可证并且不打算分发,你最好构建一个纯粹的基于 RHEL 的容器镜像。
您可以使用
COPY --from
从另一个图像复制静态 PIE 二进制文件。
COPY --from=mwader/static-ffmpeg:6.1.1 /ffmpeg /usr/local/bin/
COPY --from=mwader/static-ffmpeg:6.1.1 /ffprobe /usr/local/bin/
请检查 GitHub 存储库有关此图像的信息。
https://github.com/wader/static-ffmpeg
这是同时使用
COPY --link
的好场景。