|
|
| FROM node:20-alpine AS frontend-builder
|
| WORKDIR /app/frontend
|
| COPY frontend/package.json frontend/package-lock.json ./
|
| RUN npm install
|
| COPY frontend/ ./
|
| RUN npm run build
|
|
|
|
|
| FROM python:3.12-slim
|
|
|
|
|
| COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
|
|
|
|
| RUN useradd -m -u 1000 user
|
|
|
| WORKDIR /app
|
|
|
|
|
| RUN apt-get update && apt-get install -y --no-install-recommends \
|
| git \
|
| curl \
|
| && rm -rf /var/lib/apt/lists/*
|
|
|
|
|
| COPY pyproject.toml uv.lock ./
|
|
|
|
|
|
|
| RUN uv sync --extra agent --no-dev --frozen
|
|
|
|
|
| COPY agent/ ./agent/
|
| COPY backend/ ./backend/
|
| COPY configs/ ./configs/
|
|
|
|
|
| COPY --from=frontend-builder /app/frontend/dist ./static/
|
|
|
|
|
| RUN mkdir -p /app/session_logs && \
|
| chown -R user:user /app
|
|
|
|
|
| USER user
|
|
|
|
|
| ENV HOME=/home/user \
|
| PYTHONUNBUFFERED=1 \
|
| PYTHONPATH=/app \
|
| PATH="/app/.venv/bin:$PATH"
|
|
|
|
|
| EXPOSE 7860
|
|
|
|
|
| WORKDIR /app/backend
|
| CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
|
|
|