Spaces:
Sleeping
Sleeping
| FROM node:20-slim | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| # Build timestamp: 2026-01-13T01:30 | |
| WORKDIR /app | |
| # Install esbuild globally | |
| RUN npm install -g esbuild | |
| # Copy backend package.json and install deps at root level | |
| COPY trigo-web/backend/package.json ./package.json | |
| RUN npm install --omit=dev | |
| # Copy backend source and build | |
| RUN mkdir -p backend backend/dist/backend/src | |
| COPY trigo-web/backend/src/ ./backend/src/ | |
| # Copy inc folder (needed for esbuild) | |
| COPY trigo-web/inc/ ./inc/ | |
| RUN 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 frontend dist (LFS files excluded via .dockerignore) | |
| COPY trigo-web/app/dist/ ./app/dist/ | |
| # Copy public folder (ONNX excluded via .dockerignore) | |
| 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 | |
| ENV PORT=7860 | |
| ENV HOST=0.0.0.0 | |
| ENV NODE_ENV=production | |
| EXPOSE 7860 | |
| CMD ["node", "backend/dist/backend/src/server.js"] | |