# Dockerfile para token-server (multi-stage) # Construye una imagen ligera que ejecute el token server en Node.js # Builder: install deps y preparar archivos FROM node:20-alpine AS builder WORKDIR /app # Instalar herramientas de construcción RUN apk add --no-cache python3 make g++ bash # Copiar archivos del paquete token-server e instalar dependencias COPY packages/token-server/package.json packages/token-server/package-lock.json* ./ # Usar npm ci si existe package-lock; de lo contrario, usar npm install RUN if [ -f package-lock.json ]; then \ npm ci --silent || (npm install --silent --legacy-peer-deps); \ else \ npm install --silent --legacy-peer-deps; \ fi # Copiar el código fuente del token-server COPY packages/token-server ./ # No se requiere paso de construcción para este servidor simple (es JavaScript puro) # Runtime: imagen mínima con dependencias de producción y código fuente FROM node:20-alpine AS runtime WORKDIR /app # Copiar node_modules instalados del builder al runtime COPY --from=builder /app/node_modules ./node_modules # Copiar archivos fuente COPY --from=builder /app/src ./src COPY --from=builder /app/package.json ./package.json ENV NODE_ENV=production ENV PORT=4000 EXPOSE 4000 # Ejecutar el servidor (el token-server usa src/index.js) CMD ["node", "src/index.js"]