Files
scannerbot/Dockerfile.listener
2026-05-31 14:34:25 -04:00

36 lines
1.5 KiB
Docker

################################################################################
# App builder stage
FROM rust:1.96.0-trixie@sha256:fb328f0f58becb23ba1719940a2c94ece8b0b48afa837d05b79ef64bc1e18f6e AS app-builder
RUN apt update && \
apt install -y --no-install-recommends libclang-dev cmake protobuf-compiler
COPY listener/ /opt/listener
COPY server/proto /opt/server/proto
WORKDIR /opt/listener
RUN cargo build --release
################################################################################
# FFmpeg builder stage
FROM debian:13-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 AS ffmpeg-builder
RUN apt-get update && \
apt-get install -y --no-install-recommends ffmpeg
RUN mkdir -p /rootfs/bin && \
cp /usr/bin/ffmpeg /usr/bin/ffprobe /rootfs/bin/ && \
{ ldd /usr/bin/ffmpeg; ldd /yt-dlp; } 2>/dev/null | \
grep -o '/[^ ]*' | sort -u | \
xargs -I '{}' cp --parents '{}' /rootfs && \
LIBDIR=$(dirname "$(find /rootfs -name 'libc.so.6' | head -1)") && \
for stub in libutil.so.1 libdl.so.2 libpthread.so.0 librt.so.1; do \
[ -f "${LIBDIR}/${stub}" ] || ln -sf libc.so.6 "${LIBDIR}/${stub}"; \
done
################################################################################
# Final squashed image
FROM gcr.io/distroless/cc-debian13 AS final
# Copy listener library
COPY --from=ffmpeg-builder /rootfs/ /
COPY --from=app-builder /opt/listener/target/release/scannerbot-listener /bin/
ENTRYPOINT ["/bin/scannerbot-listener"]