ef78f19e72
Plus a little freshen up of the readme's
66 lines
2.1 KiB
Docker
66 lines
2.1 KiB
Docker
# ── Stage 1: full install — source for cherry-picked plugins ────────────
|
|
FROM ros:kilted-ros-core AS gst-builder
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
gstreamer1.0-plugins-base \
|
|
gstreamer1.0-plugins-good \
|
|
gstreamer1.0-plugins-bad \
|
|
gstreamer1.0-nice \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy only the 8 plugin .so files the pipeline actually uses.
|
|
# Each plugin bundle (plugins-base/good/bad/nice) contains dozens more
|
|
# that we never touch; leaving them out keeps the runtime image lean.
|
|
RUN set -e && ARCH=$(uname -m)-linux-gnu && \
|
|
mkdir /gst-select && \
|
|
for p in \
|
|
libgstapp.so \
|
|
libgstvideoconvertscale.so \
|
|
libgstvpx.so \
|
|
libgstrtp.so \
|
|
libgstrtpmanager.so \
|
|
libgstwebrtc.so \
|
|
libgstdtls.so \
|
|
libgstsrtp.so \
|
|
libgstnice.so \
|
|
; do cp /usr/lib/${ARCH}/gstreamer-1.0/${p} /gst-select/; done
|
|
|
|
# ── Stage 2: lean runtime ───────────────────────────────────────────────
|
|
FROM ros:kilted-ros-core
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
# GStreamer core runtime and base utility libs (libgstvideo etc.) — no plugins
|
|
libgstreamer1.0-0 \
|
|
libgstreamer-plugins-base1.0-0 \
|
|
# Python GI bindings + WebRTC/SDP typelibs; pulls libgstreamer-plugins-bad1.0-0
|
|
python3-gi \
|
|
gir1.2-gst-plugins-bad-1.0 \
|
|
# Shared libs the cherry-picked plugins link against
|
|
libvpx9 \
|
|
libnice10 \
|
|
libsrtp2-1 \
|
|
liborc-0.4-0t64 \
|
|
# App deps
|
|
python3-numpy \
|
|
python3-websockets \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install cherry-picked plugins and refresh the linker cache
|
|
COPY --from=gst-builder /gst-select/ /tmp/gst-select/
|
|
RUN ARCH=$(uname -m)-linux-gnu && \
|
|
cp /tmp/gst-select/*.so /usr/lib/${ARCH}/gstreamer-1.0/ && \
|
|
rm -rf /tmp/gst-select && \
|
|
ldconfig
|
|
|
|
WORKDIR /app
|
|
COPY webrtc_streamer.py .
|
|
COPY entrypoint.sh .
|
|
RUN chmod +x entrypoint.sh
|
|
|
|
ENV IMAGE_TOPIC=/camera/image_raw
|
|
ENV PORT=8443
|
|
ENV BITRATE=2000000
|
|
|
|
EXPOSE 8443
|
|
ENTRYPOINT ["./entrypoint.sh"]
|