Dockerfile 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. FROM python:3.11-slim
  2. WORKDIR /app
  3. # Install system dependencies and Poetry
  4. RUN apt-get update && apt-get install -y \
  5. gcc \
  6. g++ \
  7. && rm -rf /var/lib/apt/lists/* \
  8. && pip install --no-cache-dir poetry==1.7.1
  9. # Copy dependency files
  10. COPY pyproject.toml ./
  11. # Configure Poetry and install dependencies
  12. RUN poetry config virtualenvs.create false \
  13. && poetry install --no-dev --no-interaction --no-ansi
  14. # Copy source code
  15. COPY src/ ./src/
  16. # Download embedding model during build (cache it) and create data directory
  17. # Note: This downloads ~1.1GB for multilingual support
  18. RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('paraphrase-multilingual-mpnet-base-v2')" \
  19. && mkdir -p /app/data
  20. # Expose port
  21. EXPOSE 8080
  22. # Health check
  23. HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
  24. CMD python -c "import requests; requests.get('http://localhost:8080/health')" || exit 1
  25. # Run application
  26. CMD ["python", "-m", "uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8080"]