deepsafe-services / image /fsd /Dockerfile
deepsafe's picture
sync from GitHub (0154d02)
4b0b144 verified
Raw History Blame Contribute Delete
1.81 kB
FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
WORKDIR /app
# System deps (using Python 3.10 from Ubuntu -- bypassing model_code's >=3.12 constraint)
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-dev \
git wget \
&& rm -rf /var/lib/apt/lists/*
RUN ln -sf /usr/bin/python3 /usr/bin/python
RUN pip install --no-cache-dir --upgrade pip setuptools wheel
# Clone the FSD repo
RUN git clone https://github.com/ductai199x/Forensic-Self-Descriptions-CVPR25.git model_code
# Install PyTorch with CUDA 12.1 (replaces CPU-only install)
RUN pip install --no-cache-dir \
torch==2.5.1 \
--index-url https://download.pytorch.org/whl/cu121
# Install FSD inference dependencies manually
RUN pip install --no-cache-dir \
"scipy>=1.10.0" \
"pillow>=10.0.0" \
pillow-heif \
click \
tqdm \
"scikit-learn>=1.6.0"
# Install FSD package: bypass both deps AND python-requires check
# The model_code requires Python >=3.12 but works fine on 3.10
RUN pip install --no-deps --no-build-isolation -e ./model_code 2>/dev/null || \
(cd model_code && pip install --no-deps -e . --config-settings="--build-option=--skip-requires-python") 2>/dev/null || \
(cd model_code && python3 setup.py develop --no-deps 2>/dev/null) || \
echo "FSD model_code install skipped -- will use direct imports"
# Install service-layer deps
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
RUN mkdir -p /app/weights
COPY weights/ /app/weights/
ENV MODEL_PORT=5005
ENV PRELOAD_MODEL=false
ENV MODEL_TIMEOUT=600
ENV WEIGHTS_DIR=/app/weights
EXPOSE 5005
RUN adduser --disabled-password --gecos '' appuser
USER appuser
CMD ["python", "app.py"]