在dockerfile中安装包

您所在的位置:网站首页 dockerfile的entrypoint 在dockerfile中安装包

在dockerfile中安装包

#在dockerfile中安装包| 来源: 网络整理| 查看: 265

下面是带有ffmpeg安装细节的dockerfile。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \ && apt-get update \ && apt-get install -y ffmpeg \ && apt-get clean && apt-get autoclean && apt-get autoremove \ && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll WORKDIR /app EXPOSE 80 EXPOSE 443 ...

如何安装不同的ffmpeg包,更确切地说是以这种方式安装alfg/ffmpeg,以保持dockerfile的其余部分保持不变并具有相同的安装路径/usr/bin/ffmpeg。

编辑

这是我的Dockerfile

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS build ARG FFMPEG_VERSION=4.4 ARG PREFIX=/opt/ffmpeg ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG MAKEFLAGS="-j4" # FFmpeg build dependencies. RUN apk add --update \ build-base \ coreutils \ freetype-dev \ gcc \ lame-dev \ libogg-dev \ libass \ libass-dev \ libvpx-dev \ libvorbis-dev \ libwebp-dev \ libtheora-dev \ opus-dev \ openssl \ openssl-dev \ pkgconf \ pkgconfig \ rtmpdump-dev \ wget \ x264-dev \ x265-dev \ yasm # Get fdk-aac from community. RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \ apk add --update fdk-aac-dev # Get rav1e from testing. RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories && \ apk add --update rav1e-dev # Get ffmpeg source. RUN cd /tmp/ && \ wget http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \ tar zxf ffmpeg-${FFMPEG_VERSION}.tar.gz && rm ffmpeg-${FFMPEG_VERSION}.tar.gz # Compile ffmpeg. RUN cd /tmp/ffmpeg-${FFMPEG_VERSION} && \ ./configure \ --enable-version3 \ --enable-gpl \ --enable-nonfree \ --enable-small \ --enable-libmp3lame \ --enable-libx264 \ --enable-libx265 \ --enable-libvpx \ --enable-libtheora \ --enable-libvorbis \ --enable-libopus \ --enable-libfdk-aac \ --enable-libass \ --enable-libwebp \ --enable-librtmp \ --enable-librav1e \ --enable-postproc \ --enable-libfreetype \ --enable-openssl \ --disable-debug \ --disable-doc \ --disable-ffplay \ --extra-cflags="-I${PREFIX}/include" \ --extra-ldflags="-L${PREFIX}/lib" \ --extra-libs="-lpthread -lm" \ --prefix="${PREFIX}" && \ make && make install && make distclean FROM mcr.microsoft.com/dotnet/aspnet:6.0 ENV PATH=/opt/ffmpeg/bin:$PATH RUN apk add --update \ ca-certificates \ openssl \ pcre \ lame \ libogg \ libass \ libvpx \ libvorbis \ libwebp \ libtheora \ opus \ rtmpdump \ x264-dev \ x265-dev COPY --from=build /opt/ffmpeg /opt/ffmpeg COPY --from=build /usr/lib/libfdk-aac.so.2 /usr/lib/libfdk-aac.so.2 COPY --from=build /usr/lib/librav1e.so /usr/lib/librav1e.so RUN apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll WORKDIR /app EXPOSE 80 EXPOSE 49154 ENV ASPNETCORE_URLS=http://+:49154 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["CarPrjP/CarPrjP.csproj", "CarPrjP/"] RUN dotnet restore "CarPrjP/CarPrjP.csproj" COPY . . WORKDIR "/src/CarPrjP" RUN dotnet build "CarPrjP.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "CarPrjP.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "CarPrjP.dll"]

不确定这样做会改变ffmpe二进制文件的路径。对于旧的Dockerfile (本例中的第一个),它运行良好(当涉及到查找ffmpeg二进制文件时)。它是从这样的代码中引用的

string ffmpegPath = "/usr/bin/ffmpeg"; string ffprobePath = "/usr/bin/ffprobe";

现在我有了新的文件

System.ComponentModel.Win32Exception:使用工作目录'/app‘启动进程'/usr/bin/ffmpeg’发生了错误。没有这样的文件或目录--显然,我需要更改路径以匹配新的安装路径,使用/opt/ffmpeg进行了尝试,但这是行不通的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3