FROM python:3.11-slim WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y \ build-essential \ curl \ software-properties-common \ git \ && rm -rf /var/lib/apt/lists/* # Copy requirements first for better caching COPY requirements.txt ./ # Install Python dependencies RUN pip3 install --no-cache-dir -r requirements.txt # Copy source code COPY src/ ./src/ # Set environment variables for model loading ENV TRANSFORMERS_CACHE=/app/.cache/transformers ENV HF_HOME=/app/.cache/huggingface ENV TORCH_HOME=/app/.cache/torch # Create cache directories RUN mkdir -p /app/.cache/transformers /app/.cache/huggingface /app/.cache/torch # Pre-download the FinBERT model to avoid runtime download issues RUN python3 -c "from transformers import AutoTokenizer, AutoModelForSequenceClassification; import torch; print('Pre-downloading FinBERT model...'); tokenizer = AutoTokenizer.from_pretrained('ProsusAI/finbert'); model = AutoModelForSequenceClassification.from_pretrained('ProsusAI/finbert'); print('FinBERT model downloaded successfully!')" EXPOSE 8501 HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]