FROM python:3.11-slim WORKDIR /app # Environment configuration ENV ENABLE_WEB_INTERFACE=true ENV PYTHONPATH=/app # Install uv and create non-root user RUN pip install --no-cache-dir uv && \ adduser --disabled-password --gecos '' appuser # Copy dependencies first (cache layer) COPY requirements.txt . RUN uv pip install --system --no-cache -r requirements.txt # Copy application code COPY . . # Set ownership and switch to non-root user RUN chown -R appuser:appuser /app USER appuser # Expose the port EXPOSE 7860 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:7860/health')" || exit 1 # Start the server CMD ["python", "-m", "uvicorn", "server.main:app", "--host", "0.0.0.0", "--port", "7860"]