# Stage 1: Build Go backend
FROM golang:1.23-alpine AS backend
WORKDIR /src
COPY backend/ .
RUN go build -o /out/tuner .

# Stage 2: Build React frontend
FROM oven/bun:latest AS frontend
WORKDIR /src
COPY frontend/ .
RUN bun install && bun run build

# Stage 3: Runtime
FROM alpine:3.20
RUN apk add --no-cache ffmpeg ca-certificates wget tar \
    && wget -qO /tmp/mediamtx.tar.gz \
       https://github.com/bluenviron/mediamtx/releases/download/v1.12.2/mediamtx_v1.12.2_linux_amd64.tar.gz \
    && tar -xzf /tmp/mediamtx.tar.gz -C /usr/local/bin mediamtx \
    && rm /tmp/mediamtx.tar.gz \
    && apk del wget tar

WORKDIR /app
COPY --from=backend /out/tuner /app/tuner
COPY --from=frontend /src/dist /app/frontend/dist
COPY mediamtx.yml /app/mediamtx.yml

ENV RESTREAMER_PORT=8080
ENV PLAYLIST_PATH=/data/playlist.m3u
ENV MEDIAMTX_PATH=/usr/local/bin/mediamtx
ENV MEDIAMTX_CONFIG=/app/mediamtx.yml
ENV FRONTEND_DIR=/app/frontend/dist

EXPOSE 1935 8080 8888

ENTRYPOINT ["/app/tuner"]
