﻿FROM pytorch/pytorch:2.4.1-cuda12.4-cudnn9-devel

WORKDIR /app

RUN apt-get update \
  && apt-get install -y --no-install-recommends build-essential ca-certificates curl git wget \
  && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
  && apt-get install -y --no-install-recommends nodejs \
  && rm -rf /var/lib/apt/lists/*

RUN npm install -g pnpm@10.10.0 \
  && pip install --no-cache-dir --upgrade pip setuptools wheel \
  && git clone --depth 1 https://github.com/VAST-AI-Research/TripoSR.git /opt/TripoSR

COPY python/requirements.txt ./python/requirements.txt
RUN pip install --no-cache-dir -r /opt/TripoSR/requirements.txt \
  && pip install --no-cache-dir -r ./python/requirements.txt

ENV PYTHONPATH=/opt/TripoSR

COPY app/package.json app/pnpm-lock.yaml app/.npmrc ./
RUN pnpm install --frozen-lockfile

COPY app/tsconfig.json ./
COPY app/src ./src
COPY app/public ./public
COPY python ./python

RUN pnpm build \
  && pnpm prune --prod \
  && mkdir -p outputs logs python/models

EXPOSE 10002

CMD ["node", "dist/server.js"]
