PlacementPredictor / Dockerfile
ranilmukesh's picture
updated logging api files
ab21ced
# Use official Python 3.11 as base image
FROM python:3.11-slim
# Install system dependencies including timezone data
RUN apt-get update && apt-get install -y \
build-essential \
curl \
git \
tzdata \
&& rm -rf /var/lib/apt/lists/*
# Set timezone to Asia/Kolkata (IST) FIRST
ENV TZ=Asia/Kolkata
RUN ln -snf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime && echo Asia/Kolkata > /etc/timezone
# Set up non-root user (HF Standard)
RUN useradd -m -u 1000 user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
MPLCONFIGDIR=/tmp/.matplotlib \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
TZ=Asia/Kolkata
WORKDIR $HOME/app
# Create matplotlib config directory
RUN mkdir -p /tmp/.matplotlib && chown -R user:user /tmp/.matplotlib
# Copy and install basic deps
COPY --chown=user requirements.txt requirements.txt
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir --upgrade -r requirements.txt
# Copy application files
COPY --chown=user . .
# Run training to generate placement_artifacts.pkl before starting
RUN python train_model.py
# HF Spaces only allows writing to /tmp
RUN mkdir -p /tmp/tmp && chown -R user:user /tmp/tmp
RUN ln -s /tmp/tmp tmp
# Create startup script to ensure proper logging
RUN cat > /home/user/app/entrypoint.sh << 'EOF'
#!/bin/bash
export TZ=Asia/Kolkata
export PYTHONUNBUFFERED=1
exec uvicorn main:app --host 0.0.0.0 --port 7860 --workers 4 --log-level info
EOF
RUN chmod +x /home/user/app/entrypoint.sh
# Hugging Face PORT is 7860
ENV PORT=7860
USER user
EXPOSE 7860
# Run with startup script
ENTRYPOINT ["/home/user/app/entrypoint.sh"]