Implement Tuner v1 — Go backend, React frontend, Docker setup
- Go backend: REST API, M3U parser, FFmpeg/MediaMTX process manager - React/Vite frontend: HLS player, admin panel, channel browser (dark theme) - MediaMTX config for RTMP ingest + HLS output - Multi-stage Dockerfile (Go + Bun + Alpine runtime) - docker-compose.yml for single-container deployment - Sample M3U playlist with test streams Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
35
Dockerfile
Normal file
35
Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user