almeira-web/transporte-cali-buenaventura/backend/Dockerfile

40 lines
1019 B
Docker

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