Appointment-Agent / Dockerfile
abubasith86's picture
Update Dockerfile
92c9230 verified
Raw
History Blame Contribute Delete
3.24 kB
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"]