# Use an official Python runtime as a parent image FROM python:3.9-slim # Install system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ python3-dev \ wget \ && rm -rf /var/lib/apt/lists # Create non-root user RUN useradd -m -u 1000 user USER user ENV PATH="/home/user/.local/bin:$PATH" WORKDIR /app # Set environment variables ENV PYTHONUNBUFFERED=1 ENV PYTHONIOENCODING=UTF-8 # Install Python dependencies in layers for better caching COPY --chown=user ./requirements.txt requirements.txt RUN pip install --no-cache-dir --upgrade -r requirements.txt # Install data science packages RUN pip install --no-cache-dir \ pandas \ scikit-learn \ matplotlib \ seaborn # Setup IPython kernel RUN ipython kernel install --name "python3" --user # Copy application code COPY --chown=user . /app RUN chmod +x /app/download_data.sh RUN /app/download_data.sh # Expose the port FastAPI will run on EXPOSE 7860 # Command to run the FastAPI app with Uvicorn CMD ["uvicorn", "app.jupyter_api:app", "--host", "0.0.0.0", "--port", "7860"]