From d5c6c7c0c4a945d13a7a1b5a2ee7ee4f7cbef1fa Mon Sep 17 00:00:00 2001 From: "ayan.ghoshal" Date: Wed, 29 Jan 2025 15:45:26 +0100 Subject: [PATCH] Upload files to '' docker with FAISS --- .dockerignore | 34 ++++++++++++++++++++++++++++++++++ Dockerfile | 34 ++++++++++++++++++++++++++++++++++ docker-compose.yml | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4be0800 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +# Python +__pycache__ +*.pyc +*.pyo +*.pyd +.Python +env/ +venv/ +.env +*.log + +# Docker +Dockerfile +docker-compose.yml +.dockerignore + +# Git +.git +.gitignore + +# IDE +.vscode/ +.idea/ + +# Face data (will be mounted as volume) +*.pkl +*.faiss +data/ + +# Others +README.md +*.md +tests/ +.pytest_cache/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4bec046 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +# Use Python 3.11 slim as base image +FROM python:3.11-slim + +# Set working directory +WORKDIR /app + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + build-essential \ + cmake \ + libgl1-mesa-glx \ + libglib2.0-0 \ + libsm6 \ + libxext6 \ + libxrender-dev \ + && rm -rf /var/lib/apt/lists/* + +# Copy requirements first for better caching +COPY requirements.txt . + +# Install Python dependencies +RUN pip install --no-cache-dir -r requirements.txt + +# Copy application code +COPY . . + +# Create directory for face data persistence +RUN mkdir -p /app/data + +# Expose port +EXPOSE 8000 + +# Command to run the application +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4d6fc8c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: '3.8' + +services: + face-recognition-api: + build: . + container_name: face-recognition-api + ports: + - "8000:8000" + volumes: + - ./data:/app/data # For persisting face data + environment: + - PYTHONUNBUFFERED=1 + - MAX_WORKERS=4 + - FACE_DETECTION_SIZE=640 + - SIMILARITY_THRESHOLD=0.6 + deploy: + resources: + limits: + cpus: '2' + memory: 4G + reservations: + cpus: '1' + memory: 2G + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + +networks: + default: + driver: bridge \ No newline at end of file