Add custom build ffmpeg

This commit is contained in:
2024-01-21 14:02:49 +08:00
parent a7f8d44166
commit 2adddc69fe

View File

@@ -1,9 +1,50 @@
FROM denoland/deno:latest
FROM denoland/deno:latest as builder
RUN apt-get update && apt-get install -y \
gcc \
'g++' \
cmake \
nasm \
git \
zlib1g-dev \
pkgconf \
clang \
autoconf \
automake \
autotools-dev \
libtool \
xutils-dev \
ca-certificates \
curl \
file \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN cd ~ && \
curl -L "https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n6.1.1.tar.gz" -o ffmpeg.tar.gz && \
tar -xzvf ffmpeg.tar.gz && \
cd Ffmpeg-n6.1.1 && \
./configure --enable-pic --prefix=/clib --enable-shared --disable-static \
--enable-gpl --enable-version3 --disable-doc --disable-ffplay \
--disable-network --disable-autodetect --enable-zlib \
--disable-encoders --enable-encoder=mjpeg \
--disable-muxers --enable-muxer=image2,image2pipe \
--disable-decoders --enable-decoder=mjpeg,png,gif \
--disable-demuxers --enable-demuxer=image_jpeg_pipe,image_png_pipe,image_gif_pipe \
--disable-parsers --enable-parser=h264,png,gif \
--disable-bsfs --enable-bsf=dts2pts,null \
--disable-protocols --enable-protocol=async,concat,concatf,data,fd,file,md5,pipe,subfile \
--disable-devices --disable-filters --enable-filter=scale && \
make -j$(grep -c ^processor /proc/cpuinfo) && make install && \
cd ~ && rm -rf Ffmpeg-n6.1.1 ffmpeg.tar.gz
FROM denoland/deno:latest as prod
ARG DENO_DEPLOYMENT_ID
WORKDIR /app
COPY --from=builder /clib/lib /app/lib
COPY --from=builder /clib/bin /app/bin
COPY ./components ./components
COPY ./islands ./islands
COPY ./page ./page
@@ -24,10 +65,15 @@ COPY ./LICENSE ./
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
zlib1g \
&& rm -rf /var/lib/apt/lists/*
ENV LD_LIBRARY_PATH=/app/lib
ENV PATH=/app/bin:$PATH
RUN deno task fetch && deno task server-build && mkdir -p ./thumbnails && chmod 777 ./thumbnails && mkdir -p ./downloads && chmod 777 ./downloads
ENV DENO_DEPLOYMENT_ID=${DENO_DEPLOYMENT_ID}
ENV DOCKER=1
EXPOSE 8000
ENTRYPOINT deno task server