# Dockerfile oficial para Pacifictrans Go (Web Platform & Microservices API)
FROM node:20-alpine AS builder

WORKDIR /app

# Copiar manifiestos e instalar dependencias
COPY package.json package-lock.json* ./
RUN npm ci --include=dev

# Copiar código fuente y compilar TypeScript a JavaScript
COPY tsconfig.json ./
COPY src ./src
RUN npm run build

# Imagen de producción final optimizada
FROM node:20-alpine AS runner

WORKDIR /app

ENV NODE_ENV=production
ENV PORT=4000

# Instalar únicamente dependencias de producción
COPY package.json package-lock.json* ./
RUN npm ci --omit=dev && npm cache clean --force

# Copiar distribución compilada y frontend web estático
COPY --from=builder /app/dist ./dist
COPY public ./public

# Crear usuario del sistema para ejecución segura
RUN addgroup -S pacifictrans && adduser -S pacifictrans -G pacifictrans
RUN chown -R pacifictrans:pacifictrans /app

USER pacifictrans

EXPOSE 4000

CMD ["node", "dist/index.js"]
