0

现在我有一个 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?

提前致谢。

4

0 回答 0