FROM python:3.10-slim # Install system dependencies (for Pillow and general Python packages) USER root RUN apt-get update && \ apt-get install -y libjpeg-dev zlib1g-dev git && \ rm -rf /var/lib/apt/lists/* # Create non-root user RUN adduser --disabled-password --gecos '' user USER user # Environment variables ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH \ PORT=7860 \ HF_HOME=/home/user/.cache/huggingface \ TRANSFORMERS_CACHE=/home/user/.cache/huggingface/transformers \ TORCH_HOME=/home/user/.cache/torch \ OUTPUT_DIR=/home/user/outputs/beit-retina WORKDIR $HOME/app # Create necessary directories RUN mkdir -p $HF_HOME $TRANSFORMERS_CACHE $TORCH_HOME $OUTPUT_DIR # Copy requirements first for caching COPY --chown=user requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # Copy app COPY --chown=user . . # Make startup script executable RUN chmod +x startup.sh # Expose port EXPOSE 7860 # Start API CMD ["bash", "startup.sh"]