File size: 2,502 Bytes
0b5fadf
 
 
182f38b
b8aa279
 
0b5fadf
 
f303ff4
 
0b26cc1
833b26d
b8aa279
0b5fadf
b8aa279
0b5fadf
 
 
 
 
bdd5765
 
182f38b
0b26cc1
bdd5765
182f38b
0b26cc1
bdd5765
 
182f38b
b8aa279
 
 
0b5fadf
bdd5765
182f38b
0b5fadf
b8aa279
0b5fadf
 
 
 
0b26cc1
0b5fadf
b8aa279
0b5fadf
 
 
 
 
0b26cc1
0b5fadf
b8aa279
6e16e71
bdd5765
 
 
 
 
 
0b5fadf
0b26cc1
 
6e16e71
0b5fadf
bdd5765
 
 
 
 
 
 
833b26d
 
0b5fadf
bdd5765
833b26d
0b5fadf
b8aa279
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
# ============================================================================
# MatAnyOne + SAM2 + Gradio Dockerfile (Python 3.10 + CUDA 12.1)
# ============================================================================

# Use NVIDIA CUDA 12.1 base image with Python 3.10
FROM nvidia/cuda:12.1.0-cudnn8-runtime-ubuntu20.04

# Environment settings
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    DEBIAN_FRONTEND=noninteractive

# Install Python 3.10 and system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3.10 python3.10-dev python3-pip python3.10-venv \
    git wget curl build-essential cmake pkg-config \
    ffmpeg libsm6 libxext6 libfontconfig1 libxrender1 \
    libgl1-mesa-glx libglib2.0-0 \
    libavformat-dev libavcodec-dev libavdevice-dev \
    libavutil-dev libswscale-dev libswresample-dev libavfilter-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Create working directory
WORKDIR /app

# Create non-root user
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
USER appuser

# Upgrade pip and install wheel
RUN python3.10 -m pip install --no-cache-dir --user pip setuptools wheel

# Copy requirements for layer caching
COPY --chown=appuser:appuser requirements.txt .

# Install PyTorch (CUDA 12.1 build)
RUN python3.10 -m pip install --no-cache-dir --user \
    torch==2.1.0 \
    torchvision==0.16.0 \
    torchaudio==2.1.0 \
    --extra-index-url https://download.pytorch.org/whl/cu121

# Install core CV/scientific dependencies
RUN python3.10 -m pip install --no-cache-dir --user \
    numpy==1.26.4 \
    opencv-python-headless==4.10.0.84 \
    Pillow>=10.0.1,<11.0 \
    scipy==1.13.1 \
    av==12.1.0

# Install everything else from requirements.txt
RUN python3.10 -m pip install --no-cache-dir --user -r requirements.txt

# Add user bin to PATH
ENV PATH="/home/appuser/.local/bin:$PATH"

# Copy application code
COPY --chown=appuser:appuser . .

# Create runtime directories
RUN mkdir -p /tmp/model_cache /tmp/processing /tmp/jobs && \
    chmod 755 /tmp/model_cache /tmp/processing /tmp/jobs

# Runtime environment variables
ENV GRADIO_SERVER_NAME="0.0.0.0" \
    GRADIO_SERVER_PORT="7860" \
    MODEL_CACHE_DIR="/tmp/model_cache" \
    TORCH_HOME="/tmp/model_cache"

# Health check
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:7860/ || exit 1

# Expose Gradio port
EXPOSE 7860

# Run application
CMD ["python3.10", "app.py"]