# --- Stage 1: Build ---
FROM node:20-alpine AS builder

WORKDIR /usr/src/app

# Copiar archivos de dependencias
COPY package*.json ./

# Instalar TODAS las dependencias (incluyendo devDependencies para posibles builds)
RUN npm install

# Copiar el resto del código
COPY . .

# --- Stage 2: Production ---
FROM node:20-alpine

WORKDIR /usr/src/app

# Establecer entorno de producción
ENV NODE_ENV=production

# Copiar solo los archivos necesarios de la etapa anterior
COPY --from=builder /usr/src/app/package*.json ./
COPY --from=builder /usr/src/app/src ./src

# Instalar solo dependencias de producción
RUN npm install --omit=dev

# Crear un usuario no root por seguridad
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# Crear directorio de caché y asignar permisos al usuario de la aplicación
RUN mkdir -p /usr/src/app/cache && chown -R appuser:appgroup /usr/src/app

USER appuser

# Exponer el puerto configurado en .env (por defecto 3120)
EXPOSE 3120

# Comando para iniciar la aplicación usando node directamente (no nodemon)
CMD ["node", "src/index.js"]
