# 1. Imagen base: Node.js 18 en Alpine (ligera)
FROM node:18-alpine

# 2. Variable de entorno para producción
ENV NODE_ENV=production

# 3. Directorio de trabajo
WORKDIR /app

# 4. Copiar dependencias primero para aprovechar caché
COPY package*.json ./

# 5. Instalar dependencias de producción y limpiar caché
RUN npm ci --omit=dev && npm cache clean --force

# 6. Copiar el resto de la aplicación
COPY . .

# 7. Crear directorio para la base de datos y usuario no root
RUN mkdir -p /app/data && \
    addgroup -S app && adduser -S app -G app && \
    chown -R app:app /app
USER app

# 8. Crear volumen para persistencia de datos
VOLUME ["/app/data"]

# 9. Exponer el puerto
EXPOSE 3111

# 10. Comando de inicio
CMD ["npm", "start"]

