# --- Etapa 1: Build --- FROM node:20-alpine AS builder WORKDIR /app # Instalar dependencias de desarrollo COPY package*.json ./ RUN npm install # Copiar el código fuente y archivos de entorno COPY . . COPY .env* . # Compilar TypeScript RUN npm run build # --- Etapa 2: Runtime mínimo --- FROM node:20-alpine WORKDIR /app # Instalar solo dependencias de producción COPY package*.json ./ RUN npm install --omit=dev # Copiar la carpeta compilada desde la etapa de build COPY --from=builder /app/dist ./dist # Copiar archivos de entorno a la raíz /app COPY --from=builder /app/.env* ./ # Copiar la carpeta de claves COPY --from=builder /app/keys ./keys EXPOSE 4000 # Comando de inicio que lanza tanto el server como el client CMD [ "sh", "-c", "npm --prefix /app start" ]