Spaces:
Running
Running
| FROM python:3.12-slim-bookworm@sha256:d50fb7611f86d04a3b0471b46d7557818d88983fc3136726336b2a4c657aa30b AS python-dependencies | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| libcairo2-dev \ | |
| libpango1.0-dev \ | |
| pkg-config \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /build | |
| COPY backend/requirements.lock ./backend-requirements.lock | |
| COPY ai_core/requirements.lock ./ai-core-requirements.lock | |
| # Backend and AI intentionally use isolated environments: their fully resolved | |
| # locks can pin different versions of a transitive dependency (currently Redis). | |
| RUN python -m venv /opt/backend-venv \ | |
| && /opt/backend-venv/bin/pip install --no-cache-dir --require-hashes \ | |
| -r backend-requirements.lock | |
| RUN python -m venv /opt/ai-venv \ | |
| && /opt/ai-venv/bin/pip install --no-cache-dir --require-hashes \ | |
| -r ai-core-requirements.lock | |
| FROM python:3.12-slim-bookworm@sha256:d50fb7611f86d04a3b0471b46d7557818d88983fc3136726336b2a4c657aa30b AS runtime | |
| LABEL org.opencontainers.image.title="Manim Agent - Hugging Face single Space" \ | |
| org.opencontainers.image.description="Trusted-input API, AI and render runtime; frontend deploys on Vercel" | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| PORT=7860 \ | |
| APP_ENV=production \ | |
| CORS_ORIGINS= \ | |
| REDIS_URL=redis://127.0.0.1:6379/0 \ | |
| CELERY_BROKER_URL=redis://127.0.0.1:6379/0 \ | |
| BACKEND_INTERNAL_URL=http://127.0.0.1:7860/internal \ | |
| ARTIFACTS_DIR=/artifacts \ | |
| REDIS_DATA_DIR=/data/redis \ | |
| DEPLOYMENT_PROFILE=hf-single-space-trusted-input \ | |
| HOME=/home/user | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| dvisvgm \ | |
| ffmpeg \ | |
| fonts-dejavu-core \ | |
| libgl1 \ | |
| libcairo2 \ | |
| libpango-1.0-0 \ | |
| libpangocairo-1.0-0 \ | |
| libpangoft2-1.0-0 \ | |
| redis-server \ | |
| supervisor \ | |
| texlive-fonts-recommended \ | |
| texlive-latex-base \ | |
| texlive-latex-extra \ | |
| tini \ | |
| && rm -rf /var/lib/apt/lists/* \ | |
| && latex --version \ | |
| && dvisvgm --version | |
| COPY --from=python-dependencies /opt/backend-venv /opt/backend-venv | |
| COPY --from=python-dependencies /opt/ai-venv /opt/ai-venv | |
| RUN groupadd --gid 1000 user \ | |
| && useradd --uid 1000 --gid 1000 --create-home --shell /bin/sh user \ | |
| && mkdir -p /srv/backend /srv/ai_core /srv/shared /srv/deploy \ | |
| /artifacts /data/redis /tmp/supervisor \ | |
| && chown -R user:user /artifacts /data /tmp/supervisor | |
| COPY backend/app /srv/backend/app | |
| COPY ai_core/app /srv/ai_core/app | |
| COPY ai_core/config /srv/ai_core/config | |
| COPY shared /srv/shared | |
| COPY deploy/huggingface/supervisord.conf /srv/deploy/supervisord.conf | |
| COPY deploy/huggingface/redis.conf /srv/deploy/redis.conf | |
| COPY deploy/huggingface/entrypoint.sh /srv/deploy/entrypoint.sh | |
| COPY deploy/huggingface/service-entrypoint.sh /srv/deploy/service-entrypoint.sh | |
| COPY deploy/huggingface/healthcheck.sh /srv/deploy/healthcheck.sh | |
| RUN chmod 0755 \ | |
| /srv/deploy/entrypoint.sh \ | |
| /srv/deploy/service-entrypoint.sh \ | |
| /srv/deploy/healthcheck.sh | |
| USER user | |
| WORKDIR /home/user | |
| EXPOSE 7860 | |
| HEALTHCHECK --interval=30s --timeout=5s --start-period=90s --retries=3 \ | |
| CMD ["/srv/deploy/healthcheck.sh"] | |
| ENTRYPOINT ["/usr/bin/tini", "--", "/srv/deploy/entrypoint.sh"] | |
| CMD ["/usr/bin/supervisord", "-c", "/srv/deploy/supervisord.conf"] | |