MIF_E31220095/Dockerfile

47 lines
1.1 KiB
Docker

# 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"]