Spaces:
Sleeping
Sleeping
| FROM node:20-slim | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| # Build timestamp: 2026-01-12T23:30 | |
| RUN apt-get update && apt-get install -y curl git git-lfs && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # Initialize git-lfs | |
| RUN git lfs install | |
| # Copy package files | |
| RUN mkdir -p app backend | |
| COPY trigo-web/package.json ./package.json | |
| COPY trigo-web/package-lock.json ./package-lock.json | |
| COPY trigo-web/backend/package.json ./backend/package.json | |
| COPY trigo-web/backend/package-lock.json ./backend/package-lock.json | |
| # Install build tools | |
| RUN npm install -g tsx esbuild | |
| # Install root deps (production only) | |
| RUN npm ci --omit=dev || npm install --omit=dev --force | |
| # Install backend deps with retry | |
| RUN cd backend && (npm ci || npm install --force) | |
| # Copy backend source | |
| COPY trigo-web/backend/src/ ./backend/src/ | |
| COPY trigo-web/backend/tsconfig.json ./backend/ | |
| # Build backend | |
| RUN mkdir -p backend/dist/backend/src && \ | |
| esbuild backend/src/server.ts --bundle --platform=node --target=node20 --format=esm \ | |
| --outfile=backend/dist/backend/src/server.js \ | |
| --external:express --external:socket.io --external:cors --external:dotenv --external:uuid | |
| # Copy pre-built frontend dist directly (skip app npm install and vite build) | |
| COPY trigo-web/app/dist/ ./app/dist/ | |
| # Copy public folder | |
| COPY trigo-web/public/ ./public/ | |
| # Copy env files | |
| COPY trigo-web/.env ./.env | |
| COPY trigo-web/backend/.env ./backend/.env | |
| COPY trigo-web/backend/.env.local ./backend/.env.local | |
| # Copy inc folder (shared types) | |
| COPY trigo-web/inc/ ./inc/ | |
| # Copy parser | |
| COPY trigo-web/public/lib/tgnParser.cjs ./public/lib/ | |
| # Check that LFS files were properly copied | |
| RUN echo "=== Checking LFS files ===" && \ | |
| ls -la app/dist/assets/*.wasm 2>/dev/null || echo "No WASM files found" && \ | |
| ls -la app/dist/onnx/*/*.onnx 2>/dev/null | head -5 || echo "No ONNX files found" && \ | |
| file app/dist/assets/*.wasm 2>/dev/null | head -1 || echo "Cannot check file type" | |
| ENV PORT=7860 | |
| ENV HOST=0.0.0.0 | |
| ENV NODE_ENV=production | |
| EXPOSE 7860 | |
| CMD ["npm", "run", "start:prod"] | |