Files
Audio-Classifier/backend/Dockerfile
Benoit e863f61103 Add server deployment support with Essentia
- Add install-server.sh for easy deployment on Linux servers
- Update Dockerfile to auto-detect architecture (x86_64/ARM64)
- Add deploy.sh for remote deployment
- Update requirements.txt with Essentia support notes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 23:04:29 +01:00

62 lines
1.9 KiB
Docker

FROM python:3.11-slim
# Install system dependencies
RUN apt-get update && apt-get install -y \
ffmpeg \
libsndfile1 \
libsndfile1-dev \
gcc \
g++ \
gfortran \
libopenblas-dev \
liblapack-dev \
pkg-config \
curl \
&& rm -rf /var/lib/apt/lists/*
# Set working directory
WORKDIR /app
# Upgrade pip, setuptools, wheel
RUN pip install --no-cache-dir --upgrade pip setuptools wheel
# Copy requirements
COPY requirements.txt .
# Install Python dependencies in stages for better caching
RUN pip install --no-cache-dir numpy==1.24.3
RUN pip install --no-cache-dir scipy==1.11.4
# Install Essentia - detect architecture and install appropriate wheel
RUN ARCH=$(uname -m) && \
if [ "$ARCH" = "x86_64" ]; then \
echo "Installing Essentia for x86_64..." && \
pip install --no-cache-dir --trusted-host essentia.upf.edu \
https://essentia.upf.edu/python-wheels/essentia-2.1_beta6.dev374-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl || \
echo "Essentia installation failed, using fallback mode"; \
elif [ "$ARCH" = "aarch64" ]; then \
echo "Installing Essentia for aarch64..." && \
pip install --no-cache-dir --trusted-host essentia.upf.edu \
https://essentia.upf.edu/python-wheels/essentia-2.1_beta6.dev374-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl || \
echo "Essentia installation failed, using fallback mode"; \
else \
echo "Unsupported architecture: $ARCH, using fallback mode"; \
fi
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY src/ ./src/
COPY alembic.ini .
COPY models/ ./models/
# Create models directory if not exists
RUN mkdir -p /app/models
# Expose port
EXPOSE 8000
# Run migrations and start server
CMD alembic upgrade head && \
uvicorn src.api.main:app --host 0.0.0.0 --port 8000