# 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"]