Spaces:
Paused
Paused
File size: 2,578 Bytes
fc353d5 9f01b99 fc353d5 484e5b0 2166ae5 922e083 6961111 2166ae5 fc353d5 9f01b99 fc353d5 922e083 2fd06bf 2166ae5 922e083 2166ae5 fc353d5 9f01b99 fc353d5 9f01b99 9b8ca8e fc353d5 2166ae5 fc353d5 2dc4e60 9f01b99 b5cf10c 9f01b99 b5cf10c fc353d5 4f3a209 fc353d5 9f01b99 2166ae5 fc353d5 9f01b99 fc353d5 2166ae5 922e083 fc353d5 9f01b99 fc353d5 4f3a209 9f01b99 2166ae5 fc353d5 9f01b99 fc353d5 9f01b99 2166ae5 fc353d5 9f01b99 fc353d5 922e083 9f01b99 2166ae5 fc353d5 9f01b99 fc353d5 8770a8c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# ===============================
# Optimized for Hugging Face Spaces
# ===============================
FROM python:3.10-slim
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1 \
DEBIAN_FRONTEND=noninteractive
# ===============================
# System dependencies (minimal)
# ===============================
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
libgomp1 \
ffmpeg \
curl \
&& rm -rf /var/lib/apt/lists/*
# ===============================
# Verify FFmpeg
# ===============================
RUN ffmpeg -version 2>/dev/null || echo "⚠️ FFmpeg not found"
# ===============================
# Working directory
# ===============================
WORKDIR /app
# ===============================
# Python dependencies
# ===============================
COPY backend/requirements.txt .
# Install dependencies with retry logic
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt || \
(echo "Retrying pip install..." && pip install --no-cache-dir -r requirements.txt)
# ===============================
# Pre-download MediaPipe models
# ===============================
RUN echo "📥 Downloading MediaPipe Pose models..." && \
python3 -c "import mediapipe as mp; mp.solutions.pose.Pose(model_complexity=0).close(); print('✅ Models ready');" || \
echo "⚠️ MediaPipe model download failed (will download on first use)"
# ===============================
# Copy application files
# ===============================
COPY backend/app /app/app
COPY frontend /app/frontend
COPY startup.sh /app/startup.sh
# ===============================
# Create directories and permissions
# ===============================
RUN mkdir -p /app/uploads /app/outputs /app/logs && \
chmod +x /app/startup.sh && \
chmod -R 755 /app
# ===============================
# Non-root user for security
# ===============================
RUN useradd -m -u 1000 appuser && \
chown -R appuser:appuser /app
USER appuser
# ===============================
# Expose port
# ===============================
EXPOSE 7860
# ===============================
# Health check
# ===============================
HEALTHCHECK --interval=30s --timeout=10s --start-period=5m --retries=3 \
CMD curl -f http://localhost:7860/health || exit 1
# ===============================
# Startup
# ===============================
CMD ["/bin/bash", "/app/startup.sh"] |