| # Dockerfile — PolySignal | |
| # | |
| # Estructura multicontexto: | |
| # - backend/ : API Node.js + Express + Socket.io + Prisma | |
| # - frontend/ : SPA Vanilla JS (servida como estaticos) | |
| # | |
| # Pasos: | |
| # 1. Establecer WORKDIR en /app | |
| # 2. Copiar e instalar dependencias del backend | |
| # 3. Copiar e instalar dependencias del frontend y construir (vite build) | |
| # 4. Copiar todo el codigo fuente del backend | |
| # 5. Generar cliente Prisma para SQLite | |
| # 6. Exponer puerto 7860 (requerido por HuggingFace Spaces) | |
| # 7. Iniciar aplicacion con: node backend/src/index.js | |
| # | |
| # Build local: docker build -t polysignal . | |
| # Run local: docker run -p 7860:7860 --env-file .env polysignal | |
| FROM node:22-slim | |
| WORKDIR /app | |
| # Instalar dependencias del backend | |
| COPY backend/package*.json ./backend/ | |
| RUN cd backend && npm ci --only=production | |
| # Instalar dependencias del frontend y construir | |
| COPY frontend/package*.json ./frontend/ | |
| RUN cd frontend && npm ci | |
| COPY frontend/ ./frontend/ | |
| RUN cd frontend && npm run build | |
| # Copiar codigo fuente del backend | |
| COPY backend/ ./backend/ | |
| # Generar cliente Prisma | |
| RUN cd backend && npx prisma generate | |
| # Puerto obligatorio de HuggingFace Spaces | |
| EXPOSE 7860 | |
| CMD ["node", "backend/src/index.js"] | |