atranscoder-rpc/Dockerfile

84 lines
2.4 KiB
Docker

FROM alpine:3.20 AS builder
# Build FFmpeg.
RUN apk add --no-cache \
rust \
cargo \
fdk-aac-dev \
clang16 \
clang16-static \
clang16-libclang \
llvm16-dev \
libc-dev \
pkgconf \
git \
build-base \
nasm \
yasm \
lame-dev \
opus-dev \
libvorbis-dev \
libass-dev \
libunistring-dev \
gnutls-dev && \
mkdir -p /ffmpeg/{ffmpeg_build,bin} && \
cd /ffmpeg && \
wget -O ffmpeg-7.0.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.bz2 && \
tar xjvf ffmpeg-7.0.1.tar.bz2 && \
cd ffmpeg-7.0.1 && \
PKG_CONFIG_PATH="/ffmpeg/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="/ffmpeg/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I/ffmpeg/ffmpeg_build/include" \
--extra-ldflags="-L/ffmpeg/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--ld="g++" \
--bindir="/ffmpeg/bin" \
--enable-gpl \
--enable-gnutls \
--enable-libass \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-nonfree && \
PATH="/ffmpeg/bin:$PATH" make -j$(nproc) && \
make install && \
hash -r
# Build the app.
WORKDIR /build
COPY ./ ./
RUN cd /build && \
export PKG_CONFIG_PATH="/ffmpeg/ffmpeg_build/lib/pkgconfig" && \
cargo build --verbose --release
FROM alpine:3.20 AS fdk-builder
COPY ./.docker/APKBUILD /fdk-aac/APKBUILD
RUN apk add --no-cache sudo abuild build-base cmake samurai && \
cd /fdk-aac && \
adduser -G abuild -g "Alpine Package Builder" -s /bin/ash -D builder && \
echo "builder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
chown -R builder:abuild /fdk-aac && \
chmod 777 /tmp && \
sudo -u builder sh -c 'abuild-keygen -ani && abuild -r' && \
find /home/builder -name 'fdk-aac*' -exec mv {} /fdk-aac.apk \;
FROM alpine:3.20
WORKDIR /
RUN apk add --no-cache \
ffmpeg-libavutil \
ffmpeg-libavformat \
ffmpeg-libavfilter \
ffmpeg-libavdevice \
dumb-init \
mailcap \
tzdata \
gnutls
COPY --from=fdk-builder /fdk-aac.apk /tmp/fdk-aac.apk
RUN apk add --allow-untrusted /tmp/fdk-aac.apk && rm /tmp/fdk-aac.apk
COPY --from=builder /build/target/release/atranscoder-rpc /usr/local/bin
EXPOSE 8090
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/usr/local/bin/atranscoder-rpc"]