diff --git a/.dockerignore b/.dockerignore index a42e729..fa3eb90 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,3 @@ -server/.env \ No newline at end of file +server/.env +listener/target +listener/config.toml \ No newline at end of file diff --git a/Dockerfile.listener b/Dockerfile.listener new file mode 100644 index 0000000..b1dd347 --- /dev/null +++ b/Dockerfile.listener @@ -0,0 +1,36 @@ +################################################################################ +# 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"] \ No newline at end of file