Spaces:
Sleeping
Sleeping
| # syntax=docker/dockerfile:1 | |
| FROM node:22-bookworm-slim AS frontend-build | |
| WORKDIR /app/frontend | |
| COPY frontend/package*.json ./ | |
| RUN npm ci | |
| COPY frontend/ ./ | |
| ARG VITE_API_BASE_URL= | |
| ARG VITE_REQUIRE_ACCESS_TOKEN=false | |
| ENV VITE_API_BASE_URL=${VITE_API_BASE_URL} | |
| ENV VITE_REQUIRE_ACCESS_TOKEN=${VITE_REQUIRE_ACCESS_TOKEN} | |
| RUN npm run build | |
| FROM python:3.12-slim AS runtime | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| PIP_NO_CACHE_DIR=1 \ | |
| AIDA_DATABASE_URL=sqlite:////data/app.db \ | |
| AIDA_ENABLE_HF_MODEL=true \ | |
| AIDA_DATA_DIR=/data \ | |
| HF_HOME=/data/huggingface | |
| RUN apt-get update \ | |
| && apt-get install -y --no-install-recommends libgomp1 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app/backend | |
| COPY backend/requirements*.txt ./ | |
| ARG INSTALL_ML=true | |
| RUN if [ "$INSTALL_ML" = "true" ]; then \ | |
| pip install -r requirements-ml.txt; \ | |
| else \ | |
| pip install -r requirements.txt; \ | |
| fi | |
| COPY backend/ /app/backend/ | |
| COPY --from=frontend-build /app/frontend/dist /app/frontend/dist | |
| RUN useradd --system --uid 10001 --create-home appuser \ | |
| && mkdir -p /data \ | |
| && chown -R appuser:appuser /app /data | |
| USER appuser | |
| EXPOSE 8000 | |
| HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \ | |
| CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=3).read()" | |
| CMD ["sh", "-c", "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-8000} --proxy-headers"] | |