mirror of
https://github.com/R0m1k3/xtremobile.git
synced 2026-10-11 17:29:26 +02:00
Update CACHEBUST arg to 2025-12-08-v3 to ensure Docker doesn't use cached layers and rebuilds with the latest code fixes. This ensures the duplicate height line fix is included in the build.
68 lines
2.0 KiB
Docker
68 lines
2.0 KiB
Docker
# ============================================
|
|
# Stage 1: Build Flutter Web Application
|
|
# ============================================
|
|
FROM ghcr.io/cirruslabs/flutter:stable AS builder
|
|
|
|
USER root
|
|
|
|
WORKDIR /app
|
|
|
|
# Safe directory configuration for git
|
|
RUN git config --global --add safe.directory /app
|
|
|
|
# Optimize DART VM Memory for build to prevent OOM
|
|
ENV DART_VM_OPTIONS="--old_gen_heap_size=4096"
|
|
|
|
# Enable web support (idempotent)
|
|
RUN flutter config --enable-web
|
|
|
|
# Copy dependency files first for better caching
|
|
# Note: pubspec.lock will be generated by flutter pub get if missing
|
|
# Cache buster - INCREMENT THIS VALUE TO FORCE REBUILD ON DEPLOY
|
|
ARG CACHEBUST=2025-12-08-v3
|
|
COPY pubspec.yaml ./
|
|
|
|
# Get dependencies (generates pubspec.lock automatically)
|
|
RUN flutter pub get
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# Re-run pub get after copying source to ensure lockfile consistency
|
|
RUN flutter pub get
|
|
|
|
# Clean build environment to avoid conflicts
|
|
RUN flutter clean
|
|
|
|
# Build web application (CanvasKit renderer is now default)
|
|
# Added --no-tree-shake-icons to prevent potential font issues in some environments
|
|
RUN flutter build web --release --base-href="/" --no-tree-shake-icons --verbose
|
|
|
|
# ============================================
|
|
# Stage 2: Serve with custom Dart server (with API proxy)
|
|
# ============================================
|
|
FROM dart:stable
|
|
|
|
WORKDIR /app
|
|
|
|
# Install SQLite3 library for FFI and FFmpeg for IPTV stream transcoding
|
|
RUN apt-get update && apt-get install -y sqlite3 libsqlite3-dev ffmpeg && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create directory for HLS stream output
|
|
RUN mkdir -p /tmp/streams && chmod 777 /tmp/streams
|
|
|
|
# Copy entire bin directory (API, database, etc.)
|
|
COPY bin/ ./bin/
|
|
|
|
# Get dependencies
|
|
RUN dart pub get --directory=bin
|
|
|
|
# Copy built web application from builder stage
|
|
COPY --from=builder /app/build/web /app/web
|
|
|
|
# Expose port (internal only, not mapped to host)
|
|
EXPOSE 8089
|
|
|
|
# Serve web application with API proxy
|
|
CMD ["dart", "run", "bin/server.dart", "--port", "8089", "--path", "/app/web"]
|