aimusic-attribution / Dockerfile
emresar's picture
Upload folder using huggingface_hub
6678fa1 verified
# AI Music Attribution - Full Stack Docker Image
# For deployment on HuggingFace Spaces (Docker SDK)
#
# Build: docker build -t aimusic .
# Run: docker run -p 7860:3000 aimusic
FROM node:20-slim
# Install Python and system dependencies
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
python3-venv \
ffmpeg \
libsndfile1 \
libchromaprint-tools \
&& rm -rf /var/lib/apt/lists/*
# Create app directory
WORKDIR /app
# Create Python virtual environment
RUN python3 -m venv /app/venv
ENV PATH="/app/venv/bin:$PATH"
ENV PYTHON_PATH="/app/venv/bin/python3"
# Copy Python requirements first (for caching)
COPY ml/requirements.txt ml/requirements.txt
RUN pip install --no-cache-dir -r ml/requirements.txt
# Copy package files and patches
COPY package.json pnpm-lock.yaml ./
COPY patches/ patches/
# Install pnpm and Node dependencies
RUN npm install -g pnpm && pnpm install --frozen-lockfile
# Copy application code
COPY . .
# Build frontend
RUN pnpm build
# Create data directories
RUN mkdir -p data/mert_index data/uploads data/training_tracks data/fma_seeds data/test_ai_continuations
# Copy pre-computed embeddings (if available)
# These should be added to your Space's persistent storage
# COPY data/mert_index/embeddings.json data/mert_index/
# Expose port (HF Spaces expects 7860)
EXPOSE 7860
# Environment variables
ENV NODE_ENV=production
ENV PORT=7860
ENV HOST=0.0.0.0
# ML optimization: enable multi-threading and ONNX
ENV OMP_NUM_THREADS=8
ENV MKL_NUM_THREADS=8
ENV OPENBLAS_NUM_THREADS=8
ENV USE_ONNX=0
# Start the server
CMD ["pnpm", "start"]