# Start with the base Python 3.11 image FROM python:3.11 # Create a new user and set permissions RUN useradd -m -u 1000 user # Install required system packages using apt-get RUN apt-get update && apt-get install -y \ curl \ python3-pip \ build-essential \ libssl-dev \ libffi-dev \ cargo \ && rm -rf /var/lib/apt/lists/* # Set up environment variables ENV VIRTUAL_ENV=/home/packages/.venv ENV PATH="/home/user/.local/bin:$PATH" # Set the working directory WORKDIR /app # Download and execute the install script as root ADD https://astral.sh/uv/install.sh /install.sh RUN chmod +x /install.sh && /install.sh && rm /install.sh # Switch to the non-root user USER user # Copy requirements and install Python dependencies COPY ./requirements.txt . RUN /root/.cargo/bin/uv venv /home/packages/.venv RUN /root/.cargo/bin/uv pip install --no-cache-dir -r requirements.txt # Copy the application code to the working directory COPY --chown=user . /app # Expose the port the app runs on EXPOSE 7860 # Define the default command CMD ["python", "app.py"]