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

Docker Golang镜像执行FFmpeg命令报错:bash可执行文件未找到

解决方案

问题根源

Alpine Linux镜像默认不包含bash,它自带的默认shell是ash(属于busybox组件),因此你的Go代码调用bash会提示找不到可执行文件。另外命令里用到的convert工具来自ImageMagick,当前Dockerfile未安装该工具,后续执行也会报错,需要一并处理。

方案1:安装bash(不推荐,会增加镜像体积)

在Dockerfile中添加安装bash的命令:

FROM golang:alpine3.18
RUN apk add --no-cache ffmpeg bash imagemagick

修改后你的Go代码无需调整,即可正常通过bash执行命令。

方案2:改用默认的ash(推荐,保持镜像轻量化)

无需额外安装bash,直接将Go代码里的bash替换为sh:

cmd := "ffmpeg -i Untitled.mp4 -vf \"fps=5,scale=320:-1:flags=lanczos\" -c:v pam -f image2pipe - | convert -delay 5 - -loop 0 -layers optimize test.gif"
_, err := exec.Command("sh", "-c", cmd).Output()
if err != nil {
    fmt.Println(fmt.Sprintf("Failed to execute command: %s", err))
}

同时记得在Dockerfile中安装ImageMagick(依赖convert工具):

FROM golang:alpine3.18
RUN apk add --no-cache ffmpeg imagemagick

额外提示

如果你的命令涉及复杂bash专属语法(如数组、特定扩展),才需要安装bash;仅执行简单管道命令的话,sh完全可以胜任,优先选择方案2更契合Alpine镜像轻量化的设计理念。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:52:04