FROM node:22-alpine AS frontend WORKDIR /build COPY frontend/package.json frontend/pnpm-lock.yaml ./ RUN corepack enable && pnpm install --frozen-lockfile COPY frontend/ ./ RUN pnpm build FROM python:3.12-slim WORKDIR /app COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv COPY pyproject.toml uv.lock alembic.ini ./ RUN uv sync --frozen --no-dev COPY backend backend COPY worker worker COPY migrations migrations COPY scripts scripts COPY --from=frontend /build/dist backend/static EXPOSE 8781 CMD ["sh", "scripts/start.sh"]