You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub YML在Azure Web App中持久化安装apt-get包(ffmpeg)

解决Azure Web App部署后ffmpeg丢失的问题

首先得明确:你在GitHub Workflow里执行apt-get install ffmpeg根本没用,因为这个步骤是在GitHub的构建服务器上跑的,不是Azure Web App的运行环境,装的包自然不会出现在Azure的机器上。

下面给几个靠谱的解决方法:

方法1:用启动脚本在应用启动时自动安装ffmpeg

Azure Web App每次启动时会执行你指定的启动命令,我们可以写个脚本先检查ffmpeg是否存在,不存在就安装,再启动应用。

  1. 在项目根目录创建start.sh脚本:
#!/bin/bash
# 检查ffmpeg是否已安装
if ! command -v ffmpeg &> /dev/null; then
    echo "安装ffmpeg中..."
    sudo apt-get update && sudo apt-get install ffmpeg -y -qq
fi
# 替换成你的Python应用启动命令,比如用gunicorn或者直接运行python脚本
gunicorn app:app
  1. 给脚本加执行权限:在本地或GitHub Workflow里加一步chmod +x start.sh
  2. 在Azure Portal的Web App配置页,把「启动命令」改成./start.sh,这样每次应用启动都会自动检查并安装ffmpeg。

方法2:把ffmpeg二进制文件打包到应用目录

Azure Web App的/home/site/wwwroot目录是持久化的,不会因为重启或部署丢失,所以可以把ffmpeg的静态编译二进制文件放到项目里一起部署:

  1. 下载对应Linux x64版本的静态ffmpeg包(不用安装,直接就能运行),解压后把ffmpeg和ffprobe文件放到项目的bin目录里
  2. 在Python代码里调用ffmpeg时指定本地路径,比如:
import subprocess
# 指向项目里的ffmpeg二进制文件
ffmpeg_path = "./bin/ffmpeg"
subprocess.run([ffmpeg_path, "-i", "input.mp4", "output.mp4"])
  1. 把bin目录提交到GitHub,部署时就会同步到Azure,重启也不会丢。

方法3:用自定义Docker容器部署

如果你的应用可以用容器部署,直接在Dockerfile里安装ffmpeg,这样容器自带ffmpeg,完全不用担心丢失问题:

FROM python:3.9-slim
WORKDIR /app
# 先安装ffmpeg
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg
# 安装Python依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 启动应用
CMD ["gunicorn", "app:app"]

然后在GitHub Workflow里把这个容器部署到Azure Web App即可。

内容的提问来源于stack exchange,提问作者PC_User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:22:17