在 Docker 内部安装 ffmpeg,取决于你是想在现有的运行容器中临时安装,还是想一劳永逸地写入 Dockerfile 重新构建。

以下是针对不同主流基础镜像(Ubuntu/Debian 和 Alpine)的具体操作方法:
方案一:修改 Dockerfile(推荐,一劳永逸)

这是最正规的做法。在你的 Dockerfile 中,根据你使用的基础镜像类型,添加对应的安装命令。

  1. 如果你的镜像基于 Ubuntu / Debian / Python (默认)

绝大多数 Python 镜像(如 python:3.12)都是基于 Debian 的。

在 Dockerfile 中加入以下代码:
Dockerfile

更新软件源并安装 ffmpeg

RUN apt-get update && \

apt-get install -y ffmpeg && \
rm -rf /var/lib/apt/lists/*

💡 提示: rm -rf /var/lib/apt/lists/* 是为了清理缓存,让你的 Docker 镜像体积更小。
  1. 如果你的镜像基于 Alpine

Alpine 镜像非常轻量,很多精简版镜像会使用它(比如 python:3.12-alpine)。

在 Dockerfile 中加入:
Dockerfile

Alpine 使用 apk 作为包管理器

RUN apk update && \

apk add --no-cache ffmpeg

修改完 Dockerfile 后,记得在终端运行以下命令重新构建镜像:
Bash

docker build -t my-app:latest .

方案二:进入正在运行的容器中手动安装(临时有效)

如果你不想重新构建镜像,只是想临时进容器让程序跑起来,可以直接进去安装。但请注意:一旦容器被销毁(docker rm),安装的 ffmpeg 就会消失。

  1. 进入容器内部

首先,通过 docker ps 找到你容器的 CONTAINER ID 或 NAMES,然后运行:
Bash

假设你的容器名字叫 my_tiktok_app

docker exec -it my_tiktok_app /bin/bash

(如果报错说找不到 bash,就把最后面的 /bin/bash 换成 /bin/sh)

  1. 在容器内执行安装命令

进入容器的终端后,根据系统类型执行:

如果是 Debian/Ubuntu 系统:
Bash

apt-get update && apt-get install -y ffmpeg

如果是 Alpine 系统:
Bash

apk add --no-cache ffmpeg

安装完成后,输入 exit 退出容器。此时你的 Python 脚本应该就能正常检测到 ffmpeg 并开始下载直播了。
方案三:如果你是用 Docker Compose 启动的

如果你是用 docker-compose.yml 启动的项目,且该项目支持通过环境变量或配置进行构建,你可以查看项目的 docker-compose.yml。

如果它使用的是 image: xxx(直接拉取镜像),你可能需要将 image 改为 build 模式,指向你修改后的 Dockerfile:
YAML

version: '3'
services:
downloader:

build: .  # 指向本地包含修改后 Dockerfile 的目录
volumes:
  - .:/app

验证安装是否成功

无论用哪种方法,安装完成后你可以在容器内运行以下命令验证:
Bash

docker exec -it <你的容器名> ffmpeg -version

如果打印出了 ffmpeg version x.x.x 的版本信息,就说明大功告成了!

标签: none

添加新评论