FROM python:3.9-slim # Set environment variables ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV PYTHONPATH="${PYTHONPATH}:/app:/home/user/app:." ENV MODEL_REVISION="20e66eb3d0788373c3bdc5b28fa2f2587b0e475f3bbc47e8ab9ff0dbdbb2df32" ENV MODEL_HF_REPO="dennisvdang/chorus-detection" ENV HF_MODEL_FILENAME="chorus_detection_crnn.h5" # Set work directory WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y ffmpeg && rm -rf /var/lib/apt/lists/* # Install Python dependencies COPY requirements.txt . RUN pip install --upgrade pip && pip install -r requirements.txt # Copy app files COPY . . # Install package in development mode RUN pip install -e . # Make the entry point script executable RUN chmod +x .space/app-entrypoint.sh || echo "Could not chmod app-entrypoint.sh" # Verify chorus_detection package installation RUN cd /app && \ python -c "import chorus_detection; print(f'Successfully imported chorus_detection')" || \ echo "Warning: chorus_detection module not properly installed" # Ensure model exists RUN python -c "from download_model import ensure_model_exists; ensure_model_exists(revision='${MODEL_REVISION}')" || \ echo "Warning: Model download failed during build" # Expose port for Streamlit EXPOSE 7860 # Run the app CMD ["bash", "-c", "cd /app && ./.space/app-entrypoint.sh"]