FROM debian:bookworm AS build

RUN apt-get update && apt-get install -y --no-install-recommends \
    git ca-certificates build-essential cmake pkg-config \
    libssl-dev \
    clang libclang-dev \
    curl \
 && rm -rf /var/lib/apt/lists/*

# Install Rust (stable)
RUN curl -fsSL https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"

WORKDIR /opt

# Build SRT from source
ARG SRT_VERSION=v1.5.3
RUN git clone --depth 1 --branch ${SRT_VERSION} https://github.com/Haivision/srt.git

WORKDIR /opt/srt
RUN cmake -S . -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -DENABLE_STATIC=OFF \
    -DENABLE_SHARED=ON \
 && cmake --build build -j \
 && cmake --install build

# Ensure pkg-config can find srt.pc (usually /usr/local/lib/pkgconfig)
ENV PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:${PKG_CONFIG_PATH}"

# Build Rust app
WORKDIR /app
COPY Cargo.toml Cargo.toml
COPY build.rs build.rs
COPY wrapper.h wrapper.h
COPY src/ src/
COPY config/ config/

RUN cargo build --release

FROM debian:bookworm-slim AS runtime

RUN apt-get update && apt-get install -y --no-install-recommends \
    libssl3 ca-certificates \
    ffmpeg \
 && rm -rf /var/lib/apt/lists/*

# libsrt shared libs installed in /usr/local/lib
COPY --from=build /usr/local/lib/ /usr/local/lib/
COPY --from=build /app/target/release/mediabridge-gateway /usr/local/bin/mediabridge-gateway

WORKDIR /config
COPY --from=build /app/config/allowlist.json /config/allowlist.json

ENV LISTEN_PORT=9000
ENV ALLOWLIST_FILE=/config/allowlist.json
ENV RING_CHUNKS=512
ENV CHUNK_SIZE=4096
ENV LOW_LATENCY=1
ENV MAX_LAG_CHUNKS=120
ENV LAG_HIGH_CHUNKS=120
ENV LAG_LOW_CHUNKS=40
ENV PLAYER_WAIT_MS=1
ENV EDGE_BACK=40
ENV JUMP_COOLDOWN_MS=250
ENV PLAY_LOG_MS=2000
ENV HEALTH_BIND=0.0.0.0:8080
ENV SERVICE_ID=mediabridge
ENV SERVICE_DESCRIPTION="SRT gateway"
ENV RELEASE_ID=dev
ENV STALLED_FLOW_MS=5000
ENV MEMORY_WARN_PERCENT=80
ENV MEMORY_FAIL_PERCENT=95
ENV STATS_SRT_HOST=127.0.0.1
ENV STATS_SRT_LATENCY_MS=80

EXPOSE 9000/udp
EXPOSE 8080/tcp
ENV LD_LIBRARY_PATH=/usr/local/lib

CMD ["/usr/local/bin/mediabridge-gateway"]
