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

在AWS EC2实例运行Docker镜像时遭遇FFmpeg可执行文件未找到错误

在AWS EC2实例运行Docker镜像时遭遇FFmpeg可执行文件未找到错误

嘿,我来帮你捋清楚这个问题!你碰到的FFmpeg找不到的报错,核心原因出在Dockerfile的构建阶段设计上——你在server阶段确实安装了FFmpeg,但最终用来部署的production镜像完全是基于全新的node:latest从头创建的,根本没把之前安装的FFmpeg带到生产镜像里,自然就会提示找不到啦。

给你两个简单可行的修复方案:

方案一:在生产阶段直接安装FFmpeg

修改production阶段的Dockerfile代码,新增FFmpeg的安装步骤,确保生产镜像里自带FFmpeg:

FROM node:latest as production
WORKDIR /srv/app
# 新增:安装FFmpeg,同时清理apt缓存减小镜像体积
RUN apt-get update && apt-get install -y ffmpeg && rm -rf /var/lib/apt/lists/*
RUN mkdir /public
COPY --from=server /srv/app/dist ./
COPY --from=client /srv/app/dist ./public
ENV NODE_ENV=production
EXPOSE 5000
CMD ["node", "app.js"]

系统安装的FFmpeg默认路径是/usr/bin/ffmpeg,大部分依赖FFmpeg的Node.js库会自动识别这个路径,不用额外配置。

方案二:基于server阶段构建生产镜像

如果不想重复安装FFmpeg,可以让production阶段直接继承server阶段的镜像,这样之前安装的FFmpeg会直接被带过来,还能节省重复安装Node环境的时间:

# 直接基于server阶段的镜像构建生产环境
FROM server as production
WORKDIR /srv/app
RUN mkdir /public
COPY --from=server /srv/app/dist ./
COPY --from=client /srv/app/dist ./public
ENV NODE_ENV=production
EXPOSE 5000
CMD ["node", "app.js"]

如果server阶段安装了开发依赖,建议在server阶段的npm install改成npm ci --only=production,减少生产镜像里的冗余文件。

另外补充下:你代码里用的@ffmpeg-installer包,在生产环境下可能因为路径问题无法正常工作,而系统级安装的FFmpeg稳定性更高,也不需要依赖包的路径配置,更适合生产环境使用。

备注:内容来源于stack exchange,提问作者Alan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:09:33