File size: 2,143 Bytes
9e4a797
cf8ed1a
e65a8eb
ef5b3bf
9e4a797
890829d
ef5b3bf
e65a8eb
9e4a797
e65a8eb
 
9e4a797
 
 
b039445
 
 
 
 
 
 
 
 
 
 
 
 
 
cf8ed1a
 
 
 
 
b039445
7b8f950
cf8ed1a
 
7b8f950
cf8ed1a
 
 
 
 
d2b0c04
 
cf8ed1a
 
 
 
e65a8eb
d2b0c04
3b64741
35e2a0f
ef5b3bf
b5f1353
 
ef5b3bf
e408c01
 
35e2a0f
ef5b3bf
9e4a797
35e2a0f
ef5b3bf
e65a8eb
35e2a0f
ef5b3bf
9e4a797
 
 
ef5b3bf
1a609a3
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
# Use an official Python runtime as a parent image
FROM python:3.9-slim # This is likely Debian 12 "Bookworm"

# Set environment variables for Python and Numba
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    NUMBA_CACHE_DIR=/tmp/numba_cache

# Set the working directory
WORKDIR /app

# Copy the requirements file into the container at /app
COPY requirements.txt /app/

# Install build dependencies and LLVM components from Debian's default repos
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        build-essential \
        libedit-dev \
        libffi-dev \
        python3-dev \
        libgl1-mesa-glx \
        libsm6 \
        libxrender1 \
        libglib2.0-0 \
        ffmpeg \
        libsndfile1 \
        libsndfile1-dev \
        # Bookworm typically has LLVM 14, 15, or 16
        # Let's try clang-14 as it's common for Bookworm.
        clang-14 \
        llvm-14-dev \
        llvm-11-runtime \
        && rm -rf /var/lib/apt/lists/*

# Set LLVM_CONFIG for clang-14
ENV LLVM_CONFIG=/usr/bin/llvm-config-14

# Explicitly install *newer* compatible versions of core audio/Numba stack
# This requires a bit of research for ideal Numba/llvmlite/Resampy compatibility
# with newer LLVM. Let's try a common, more recent pairing that generally works.
# Numba 0.55.0 works with llvmlite 0.38.0
# Librosa 0.9.2 uses resampy 0.3.1
RUN pip install --no-cache-dir \
    numpy==1.22.4 \
    llvmlite==0.38.0 \
    numba==0.55.0 \
    resampy==0.3.1 \
    librosa==0.9.2

# Install other Python dependencies from requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Copy the rest of the application
COPY . /app/

# Create necessary directories
RUN mkdir -p /app/cache /app/uploads /app/results /app/checkpoints /app/temp \
 && chmod -R 777 /app/cache /app/uploads /app/results /app/checkpoints /app/temp

# Ensure full permissions for app directory
RUN chmod -R 777 /app

# Expose the app port
EXPOSE 7860

# Set Flask environment variables
ENV FLASK_APP=app.py \
    FLASK_ENV=production

# Start the application with Gunicorn
CMD ["gunicorn", "--bind", "0.0.0.0:7860", "app:app"]