# 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 || npm install --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 install --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"]