Spaces:
Paused
Paused
| # WidgeTDC Backend - Simple Dockerfile for HuggingFace Spaces | |
| FROM node:20-alpine | |
| # Install dependencies for native modules and Prisma | |
| RUN apk add --no-cache python3 make g++ git openssl openssl-dev | |
| WORKDIR /app | |
| # Copy all package files | |
| COPY package*.json ./ | |
| COPY packages/domain-types/package*.json ./packages/domain-types/ | |
| COPY packages/mcp-types/package*.json ./packages/mcp-types/ | |
| # Install dependencies | |
| RUN npm install | |
| # Copy source code | |
| COPY packages/ ./packages/ | |
| COPY src/ ./src/ | |
| COPY prisma/ ./prisma/ | |
| COPY tsconfig.json ./ | |
| # Build shared packages | |
| RUN cd packages/domain-types && npm run build | |
| RUN cd packages/mcp-types && npm run build | |
| # Generate Prisma client | |
| RUN npx prisma generate || true | |
| # Build backend with esbuild (bypasses TypeScript strict checking) | |
| RUN npx esbuild src/index.ts --bundle --platform=node --target=node20 \ | |
| --outfile=dist/index.js \ | |
| --external:@prisma/client \ | |
| --external:better-sqlite3 \ | |
| --external:pg-native \ | |
| --external:@xenova/transformers \ | |
| --external:onnxruntime-node \ | |
| --external:sharp \ | |
| --external:canvas \ | |
| --format=cjs \ | |
| --log-level=warning | |
| # Create data directories | |
| RUN mkdir -p /app/data/dropzone /app/data/vidensarkiv /app/data/agents /app/data/harvested | |
| # Set permissions for non-root user | |
| RUN chown -R 1000:1000 /app | |
| USER 1000 | |
| # Environment | |
| ENV NODE_ENV=production | |
| ENV PORT=7860 | |
| ENV DOCKER=true | |
| ENV HF_SPACE=true | |
| EXPOSE 7860 | |
| # Health check | |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ | |
| CMD node -e "require('http').get('http://localhost:7860/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))" | |
| CMD ["node", "dist/index.js"] | |