- Backend: Add Content-Type: application/json to all JSON API endpoints - Android TV: Reduce HomeViewModel memory usage (load 4 categories only, limit 15 items each) - Android TV: Prevent OOM kill on TV devices with limited RAM - Updated APK, docker-compose, health endpoint to v3.9.2
49 lines
1.2 KiB
Docker
49 lines
1.2 KiB
Docker
# Stage 1: Build Image (Frontend)
|
|
FROM node:20-alpine AS frontend-builder
|
|
WORKDIR /app/frontend
|
|
COPY frontend-react/package*.json ./
|
|
RUN npm install
|
|
COPY frontend-react/ .
|
|
RUN npm run build
|
|
|
|
# Stage 2: Build Image (Backend)
|
|
FROM --platform=$BUILDPLATFORM golang:1.24-alpine AS backend-builder
|
|
WORKDIR /app/backend
|
|
|
|
ARG TARGETOS TARGETARCH
|
|
|
|
COPY backend/go.mod backend/go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY backend/ .
|
|
# Build static binary for Linux amd64
|
|
RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags="-w -s" -o server cmd/server/main.go
|
|
|
|
# Stage 3: Final Image
|
|
FROM alpine:latest
|
|
WORKDIR /app
|
|
|
|
# Install runtime dependencies
|
|
RUN apk add --no-cache sqlite ca-certificates tzdata python3 py3-pip
|
|
RUN pip3 install --break-system-packages --ignore-installed yt-dlp || true
|
|
|
|
# Copy backend binary
|
|
COPY --from=backend-builder /app/backend/server .
|
|
|
|
# Copy frontend build to the expected static directory
|
|
COPY --from=frontend-builder /app/frontend/dist ./dist
|
|
|
|
|
|
|
|
# Create data directory
|
|
RUN mkdir -p data
|
|
|
|
# Environment variables
|
|
ENV PORT=8000
|
|
ENV DATABASE_URL=/app/data/streamflow.db
|
|
|
|
# Expose port
|
|
EXPOSE 8000
|
|
|
|
# Start server
|
|
CMD ["./server"]
|