
FROM node:22-bookworm-slim AS builder

WORKDIR /usr/src/

RUN apt-get update && apt-get install -y \
    build-essential cmake python3 wget libspandsp-dev libtiff-dev libgnutls28-dev libsrtp2-dev libboost-all-dev && \
    npm install -g node-gyp && \
    wget https://github.com/TimothyGu/libilbc/releases/download/v3.0.4/libilbc-3.0.4.tar.gz && \
    tar xvzf libilbc-3.0.4.tar.gz && \
    cd libilbc-3.0.4 && \
    cmake . -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_INSTALL_INCLUDEDIR=/usr/include && \
    cmake --build . && \
    cmake --install . && \
    cd .. && rm -rf libilbc-3.0.4 libilbc-3.0.4.tar.gz && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/local/lib/node_modules/@babblevoice/projectrtp/
COPY . .

# Install production dependencies
RUN npm ci --no-optional --production && \
    rm -fr src/build/Release/obj.target && \
    rm -fr build/Release/obj.target/projectrtp

FROM node:22-bookworm-slim AS app

RUN apt-get update && apt-get install -y \
    libspandsp2 libtiff6 libgnutls30 libc6 openssl ca-certificates && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/local/lib/node_modules/@babblevoice/projectrtp/ /usr/local/lib/node_modules/@babblevoice/projectrtp/
COPY --from=builder /usr/lib/libilbc* /usr/lib/

ENV NODE_PATH=/usr/local/lib/node_modules

# Expose UDP ports
EXPOSE 10000-50000/udp

# Set working directory and run the app
WORKDIR /usr/local/lib/node_modules/@babblevoice/projectrtp/
CMD ["node", "examples/simplenode.js"]
