Har*_*maz 2 ffmpeg docker alpine-linux
ffmpeg我有一个可以执行和命令的 Go 程序ffprobe,因此我需要将它们安装在我的 Docker 容器中。
这是我的 Dockerfile:
FROM golang:1.17.7-alpine
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o ./server cmd/service/main.go
RUN apk update
RUN apk upgrade
RUN apk add --no-cache ffmpeg
FROM alpine
COPY --from=0 /src/server /usr/bin/server
CMD ["server"]
Run Code Online (Sandbox Code Playgroud)
但是,当我运行容器时,它说:
exec: "ffprobe": executable file not found in $PATH
Run Code Online (Sandbox Code Playgroud)
我该如何修复它?
因为 ffmpeg 是运行时依赖项,而不是构建工具,所以您必须将其添加到该FROM alpine部分中,而不是该FROM golang:1.17.7-alpine部分中,这样它就安装在您的服务器实际运行的映像上,而不是您的服务器编译所针对的系统映像上。
那么,对原始代码进行最小的更改即可使其正常工作,只需移动行即可,无需进一步更改任何内容:
FROM golang:1.17.7-alpine
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o ./server cmd/service/main.go
FROM alpine
RUN apk update
RUN apk upgrade
RUN apk add --no-cache ffmpeg
COPY --from=0 /src/server /usr/bin/server
CMD ["server"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4399 次 |
| 最近记录: |