MCP Vector Sync

by qtoexdj
Verified
# Usar una imagen base de Node.js con versión LTS (Node 20) FROM node:20-alpine AS builder # Establecer directorio de trabajo WORKDIR /app # Copiar package.json y package-lock.json COPY package*.json ./ # Instalar dependencias RUN npm ci # Copiar el resto del código fuente COPY . . # Compilar la aplicación TypeScript RUN npm run build # Etapa de producción FROM node:20-alpine AS production # Configurar variables de entorno para producción ENV NODE_ENV=production # Establecer directorio de trabajo WORKDIR /app # Copiar package.json y package-lock.json COPY package*.json ./ # Instalar solo dependencias de producción RUN npm ci --omit=dev # Copiar la aplicación compilada desde la etapa de construcción COPY --from=builder /app/dist ./dist # Crear un archivo .env con valores predeterminados (sin DEMO_MODE) RUN echo "OPENAI_MODEL=text-embedding-ada-002\nMONITOR_INTERVAL=21600000\nBATCH_SIZE=50\nMAX_CONCURRENT=3\nMAX_RETRIES=3\nRATE_LIMIT_PER_TENANT=100\nCONCURRENT_REQUESTS=5\nLOG_LEVEL=info" > /app/.env # Exponer puerto para MCP (opcional, principalmente para documentación) EXPOSE 3000 # Script para iniciar la aplicación con variables de entorno COPY <<EOF /app/start.sh #!/bin/sh # Imprimir variables de entorno para depuración (sin mostrar valores sensibles) echo "Variables de entorno configuradas:" echo "SUPABASE_URL: ${SUPABASE_URL:+configurado}" echo "SUPABASE_SERVICE_ROLE_KEY: ${SUPABASE_SERVICE_ROLE_KEY:+configurado}" echo "OPENAI_API_KEY: ${OPENAI_API_KEY:+configurado}" echo "OPENAI_MODEL: ${OPENAI_MODEL}" echo "MONITOR_INTERVAL: ${MONITOR_INTERVAL}" echo "BATCH_SIZE: ${BATCH_SIZE}" echo "MAX_CONCURRENT: ${MAX_CONCURRENT}" echo "LOG_LEVEL: ${LOG_LEVEL}" # Iniciar la aplicación node dist/index.js EOF RUN chmod +x /app/start.sh # Iniciar la aplicación usando el script CMD ["/app/start.sh"]