FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ UV_LINK_MODE=copy RUN pip install --no-cache-dir uv WORKDIR /app COPY pyproject.toml uv.lock README.md ./ COPY .env.example config.yaml.example config.yaml* ./ COPY src ./src RUN uv sync --frozen --no-dev RUN useradd --create-home --shell /usr/sbin/nologin appuser \ && chown -R appuser:appuser /app USER appuser EXPOSE 7860 HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ CMD python -c "import sys, urllib.request; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:7860/health').status == 200 else 1)" CMD ["uv", "run", "uvicorn", "psview_agent.main:app", "--host", "0.0.0.0", "--port", "7860"]