File size: 1,516 Bytes
4b0b144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04

ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1

WORKDIR /app

# Install Python 3.10 and system dependencies for OpenCV
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 python3-pip \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender-dev \
    && rm -rf /var/lib/apt/lists/*

RUN ln -sf /usr/bin/python3 /usr/bin/python

# Install PyTorch with CUDA 12.1
RUN pip install --no-cache-dir \
    torch==2.5.1 torchvision==0.20.1 \
    --index-url https://download.pytorch.org/whl/cu121

# Copy requirements and install (facenet-pytorch needs --no-deps due to torch<2.3 pin)
COPY requirements.txt .
RUN pip install --no-cache-dir --no-deps facenet-pytorch && \
    pip install --no-cache-dir -r requirements.txt

# Create logs and weights directories
RUN mkdir -p logs weights

# Copy model code (vendored from MINTIME repo)
COPY model_code/ /app/model_code/

# Copy weights
COPY weights/ /app/weights/

# Copy application code
COPY app.py .

# Environment variables
ENV MODEL_PORT=7008
ENV PRELOAD_MODEL=false
ENV MODEL_TIMEOUT=1800
ENV EXTRACTOR_WEIGHTS_PATH=/app/weights/MINTIME/MINTIME_XC_Extractor_checkpoint30
ENV MODEL_WEIGHTS_PATH=/app/weights/MINTIME/MINTIME_XC_Model_checkpoint30

# Expose port
EXPOSE 7008

# Drop root privileges
RUN adduser --disabled-password --gecos '' appuser && \
    chown -R appuser:appuser /app/logs /app/weights
USER appuser

# Run the service
CMD ["python", "app.py"]