Spaces:
Runtime error
Runtime error
| FROM python:3.12-slim | |
| # ββ System deps βββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| git curl nginx supervisor \ | |
| && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ | |
| && apt-get install -y nodejs \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ββ uv ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ | |
| # ββ Clone repo ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ARG REPO_URL=https://github.com/mohamedabubasith/voice-receptionist-demo.git | |
| ARG REPO_BRANCH=main | |
| RUN git clone --depth 1 --branch ${REPO_BRANCH} ${REPO_URL} /app | |
| # ββ Build frontend ββββββββββββββββββββββββββββββββββββββββββββ | |
| ARG VITE_LIVEKIT_URL | |
| ARG VITE_LIVEKIT_API_KEY | |
| ARG VITE_LIVEKIT_API_SECRET | |
| ARG VITE_RECEPTIONIST_NAME=Priya | |
| ARG VITE_CLINIC_NAME=Demo Clinic | |
| ENV VITE_LIVEKIT_URL=$VITE_LIVEKIT_URL \ | |
| VITE_LIVEKIT_API_KEY=$VITE_LIVEKIT_API_KEY \ | |
| VITE_LIVEKIT_API_SECRET=$VITE_LIVEKIT_API_SECRET \ | |
| VITE_RECEPTIONIST_NAME=$VITE_RECEPTIONIST_NAME \ | |
| VITE_CLINIC_NAME=$VITE_CLINIC_NAME | |
| WORKDIR /app/frontend | |
| RUN npm ci && npm run build | |
| # ββ Install Python agent deps βββββββββββββββββββββββββββββββββ | |
| WORKDIR /app/livekit | |
| RUN uv sync --frozen --no-dev | |
| # ββ nginx config (port 7860 for HF) ββββββββββββββββββββββββββ | |
| RUN mkdir -p /app/data | |
| RUN cp -r /app/frontend/dist/. /usr/share/nginx/html/ | |
| RUN printf 'server {\n\ | |
| listen 7860;\n\ | |
| root /usr/share/nginx/html;\n\ | |
| index index.html;\n\ | |
| location / { try_files $uri $uri/ /index.html; }\n\ | |
| gzip on;\n\ | |
| }\n' > /etc/nginx/sites-enabled/default | |
| # ββ supervisord config ββββββββββββββββββββββββββββββββββββββββ | |
| RUN printf '[supervisord]\nnodaemon=true\nlogfile=/dev/null\nlogfile_maxbytes=0\n\n\ | |
| [program:nginx]\ncommand=nginx -g "daemon off;"\nautorestart=true\nstdout_logfile=/dev/stdout\nstdout_logfile_maxbytes=0\nstderr_logfile=/dev/stderr\nstderr_logfile_maxbytes=0\n\n\ | |
| [program:agent]\ncommand=uv run python agent.py start\ndirectory=/app/livekit\nautorestart=true\nstdout_logfile=/dev/stdout\nstdout_logfile_maxbytes=0\nstderr_logfile=/dev/stderr\nstderr_logfile_maxbytes=0\n' \ | |
| > /etc/supervisor/conf.d/app.conf | |
| ENV TOKEN_COUNTER_DIR=/app/data | |
| RUN printf '#!/bin/sh\n\ | |
| cat > /usr/share/nginx/html/config.js <<EOF\n\ | |
| window.__CONFIG__ = {\n\ | |
| RECEPTIONIST_NAME: "${RECEPTIONIST_NAME:-Priya}",\n\ | |
| CLINIC_NAME: "${CLINIC_NAME:-Demo Clinic}"\n\ | |
| };\n\ | |
| EOF\n\ | |
| exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf\n' \ | |
| > /entrypoint.sh && chmod +x /entrypoint.sh | |
| EXPOSE 7860 | |
| CMD ["/entrypoint.sh"] | |