| |
|
| | 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"]
|
| |
|