@ -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/ |
@ -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"] |
@ -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 |