# Use Python 3.8 slim image FROM python:3.8-slim # Set working directory WORKDIR /app # Install system dependencies required for ML libraries RUN apt-get update && apt-get install -y \ gcc \ g++ \ wget \ && rm -rf /var/lib/apt/lists/* # Upgrade pip to version 25 (latest available) RUN pip install --upgrade pip # Copy requirements first for better caching COPY requirements_docker.txt . # Install Python dependencies RUN pip install --no-cache-dir -r requirements_docker.txt # Download NLTK data RUN python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords')" # Copy application code COPY . . # Create necessary directories for file uploads and static files RUN mkdir -p static/files # Set environment variables ENV FLASK_APP=app.py ENV FLASK_ENV=production ENV PYTHONUNBUFFERED=1 # Expose port EXPOSE 8080 # Create non-root user for security RUN useradd --create-home --shell /bin/bash app \ && chown -R app:app /app USER app # Command to run the application CMD ["python", "-m", "gunicorn", "--bind", "0.0.0.0:8080", "--workers", "1", "--timeout", "120", "app:app"]