|
|
|
|
|
|
|
FROM node:22-slim AS frontend-builder |
|
|
|
|
|
ARG SPACE_HOST |
|
|
|
|
|
RUN corepack enable && corepack prepare pnpm@latest --activate |
|
|
|
|
|
WORKDIR /app/frontend |
|
|
|
|
|
COPY frontend/pnpm-lock.yaml frontend/package.json ./ |
|
|
|
|
|
RUN pnpm install --frozen-lockfile |
|
|
|
|
|
COPY frontend/ ./ |
|
|
|
|
|
ENV VITE_APP_ENV=production |
|
RUN if [ -n "$SPACE_HOST" ]; then \ |
|
echo "Building with SPACE_HOST: $SPACE_HOST"; \ |
|
VITE_BACKEND_URL="https://$SPACE_HOST" pnpm build; \ |
|
else \ |
|
echo "Building without SPACE_HOST"; \ |
|
VITE_BACKEND_URL="http://127.0.0.1:9481" \ |
|
pnpm build; \ |
|
fi |
|
|
|
|
|
|
|
|
|
|
|
FROM python:3.12-slim AS backend-builder |
|
|
|
|
|
RUN pip install --no-cache-dir uv |
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
COPY backend/pyproject.toml backend/uv.lock ./backend/ |
|
RUN cd backend && uv pip install --no-cache-dir --system . |
|
|
|
|
|
COPY backend/ ./backend/ |
|
|
|
|
|
COPY --from=frontend-builder /app/frontend/dist ./frontend/dist |
|
|
|
|
|
|
|
|
|
FROM python:3.12-slim |
|
|
|
|
|
RUN useradd -m appuser |
|
|
|
|
|
RUN mkdir -p /app/tmp_data && chown appuser:appuser /app/tmp_data |
|
|
|
WORKDIR /app |
|
|
|
|
|
COPY --from=backend-builder /usr/local /usr/local |
|
COPY --from=backend-builder /app /app |
|
|
|
|
|
RUN chown -R appuser:appuser /app/tmp_data |
|
|
|
|
|
ENV FRONTEND_PATH=/app/frontend/dist |
|
|
|
|
|
ENV HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1 |
|
|
|
|
|
USER appuser |
|
|
|
|
|
EXPOSE 9481 |
|
|
|
|
|
CMD ["uvicorn", "backend.src.app:app", "--host", "0.0.0.0", "--port", "9481"] |
|
|