34 lines
1.1 KiB
Docker
34 lines
1.1 KiB
Docker
FROM golang:1.25-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
COPY src/ ./src/
|
|
|
|
# Initialize Go module if not present
|
|
RUN go mod init playout || true
|
|
RUN go mod tidy
|
|
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -o /playlist-manager ./src/playlist.go
|
|
|
|
FROM alpine:3.20
|
|
|
|
# Install FFmpeg, curl for health checks, and basic tools
|
|
RUN apk add --no-cache \
|
|
ffmpeg \
|
|
curl \
|
|
bash
|
|
# Set working directory for playout
|
|
WORKDIR /app
|
|
# Create directories for playlist, media, and HLS output
|
|
RUN mkdir -p /app/hls /app/media /app/playlists
|
|
# Copy the playout start script and the built playlist manager binary
|
|
COPY start-playout.sh /app/
|
|
# Copy demo data for out-of-the-box playout
|
|
COPY demodata/ /app/
|
|
# Copy the built playlist manager binary from the builder stage
|
|
COPY --from=builder /playlist-manager /app/playlist-manager
|
|
# Set execute permissions for the start script and playlist manager binary
|
|
RUN chmod +x /app/start-playout.sh /app/playlist-manager
|
|
# Expose HLS directory (will be served by nginx)
|
|
VOLUME ["/app/hls"]
|
|
# Default command runs the playout loop (which calls the Go validator)
|
|
CMD ["./start-playout.sh"] |