现在我有一个 ffmpeg 的自定义图像,它有必须维护自定义图像的负担。我正在考虑一种更有效地做到这一点的方法,并遇到了 init 容器。我认为 init 容器是一个很好的解决方案,可以确保我不必维护自定义图像,并且因为它强加了关注点分离原则。
在我的部署配置中,我创建了一个 init 容器,在其中从 docker 检索 ffmpeg 图像并复制它。
kind: DeploymentConfig
spec:
initContainers:
- name: ffmpeg
image: 'docker.io/jrottenberg/ffmpeg:4.4-centos8'
command:
- cp
- /usr/local/bin/ffmpeg
- /opt/ffmpeg/
resources: {}
volumeMounts:
- name: opt-ffmpeg
mountPath: /opt/ffmpeg
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
containers:
name: example
image: example/example:v1
volumeMounts:
- name: ffmpeg
mountPath: /opt/ffmpeg
volumes:
- name: ffmpeg
emptyDir: {}
问题是 ffmpeg 缺少一些库。Ffmpeg 正在寻找共享库,但无法找到它们。我知道静态库提供了一切,但我还没有找到一个好的静态库来使用。
sh-4.4$ ldd ffmpeg
linux-vdso.so.1 (0x00007ffe5876a000)
libnss_wrapper.so => /lib64/libnss_wrapper.so (0x00007f1f19b37000)
libavdevice.so.58 => not found
libavfilter.so.7 => not found
libavformat.so.58 => not found
libavcodec.so.58 => not found
libavresample.so.4 => not found
libpostproc.so.55 => not found
libswresample.so.3 => not found
libswscale.so.5 => not found
libavutil.so.56 => not found
libm.so.6 => /lib64/libm.so.6 (0x00007f1f197b5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1f19595000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1f191d0000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f1f18fcc000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1f19d46000)
有谁知道链接动态库的方法?或者有没有人建议我如何在没有自定义图像的情况下使用 ffmpeg?
提前致谢。