initial commit
This commit is contained in:
+76
@@ -0,0 +1,76 @@
|
||||
# Meta-Stremio Docker Image
|
||||
# Standalone Stremio addon with HLS transcoding and KV storage integration
|
||||
#
|
||||
# Build standalone:
|
||||
# docker build -t meta-stremio .
|
||||
#
|
||||
# Build with custom meta-core (for development):
|
||||
# docker build --build-arg META_CORE_IMAGE=meta-core:local -t meta-stremio .
|
||||
|
||||
# Stage 0: Get meta-core binary from published image
|
||||
ARG META_CORE_IMAGE=ghcr.io/worph/meta-core:latest
|
||||
FROM ${META_CORE_IMAGE} AS meta-core
|
||||
|
||||
# Stage 1: Runtime
|
||||
FROM python:3.11-slim
|
||||
|
||||
# Container registry metadata
|
||||
LABEL org.opencontainers.image.source=https://github.com/worph/meta-stremio
|
||||
LABEL org.opencontainers.image.description="MetaMesh Stremio addon with HLS transcoding"
|
||||
LABEL org.opencontainers.image.licenses=MIT
|
||||
|
||||
# Install FFmpeg, curl (for healthcheck), and other dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ffmpeg \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Copy requirements and install Python dependencies
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copy source files
|
||||
COPY src/ ./src/
|
||||
COPY www/ ./www/
|
||||
|
||||
# Copy meta-core sidecar binary
|
||||
COPY --from=meta-core /usr/local/bin/meta-core /usr/local/bin/meta-core
|
||||
RUN chmod +x /usr/local/bin/meta-core
|
||||
|
||||
# Copy startup script
|
||||
COPY docker/start.sh /app/start.sh
|
||||
RUN chmod +x /app/start.sh
|
||||
|
||||
# Create directories for cache (media comes from volume)
|
||||
RUN mkdir -p /data/cache
|
||||
|
||||
# Environment variables with defaults
|
||||
# Storage modes: 'leader' (discover via lock file), 'redis' (direct URL)
|
||||
ENV PORT=7000 \
|
||||
MEDIA_DIR=/files \
|
||||
CACHE_DIR=/data/cache \
|
||||
STORAGE_MODE=leader \
|
||||
META_CORE_PATH=/meta-core \
|
||||
FILES_PATH=/files \
|
||||
REDIS_URL=redis://localhost:6379 \
|
||||
REDIS_PREFIX= \
|
||||
SEGMENT_DURATION=4 \
|
||||
PREFETCH_SEGMENTS=4 \
|
||||
SCHEME=auto \
|
||||
SERVICE_NAME=meta-stremio \
|
||||
SERVICE_VERSION=1.0.0 \
|
||||
META_CORE_HTTP_PORT=9000 \
|
||||
LEADER_ELECTION_ENABLED=false
|
||||
|
||||
# Expose port
|
||||
EXPOSE 7000
|
||||
|
||||
# Health check
|
||||
HEALTHCHECK --interval=10s --timeout=5s --start-period=10s --retries=3 \
|
||||
CMD curl -f http://localhost:7000/health || exit 1
|
||||
|
||||
# Run the server via startup script (starts meta-core + Python server)
|
||||
CMD ["/app/start.sh"]
|
||||
Reference in New Issue
Block a user