Base para el flujo de ramas por cliente. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
41 lines
1.5 KiB
Docker
41 lines
1.5 KiB
Docker
FROM node:20-alpine AS build
|
|
|
|
WORKDIR /app
|
|
|
|
# Certificado extra de la empresa (VPN, proxy o antivirus corporativo que
|
|
# intercepta HTTPS, ej. Zscaler/Netskope). Si mini-frontend/certs/ tiene un
|
|
# archivo .pem/.crt, npm confía en él para poder salir a internet durante el
|
|
# build. Si la carpeta está vacía (caso normal), este paso no hace nada.
|
|
COPY certs/ /usr/local/share/extra-ca/
|
|
COPY package.json package-lock.json ./
|
|
RUN CERT_FILE=$(find /usr/local/share/extra-ca -maxdepth 1 -type f \( -name "*.pem" -o -name "*.crt" -o -name "*.cer" \) 2>/dev/null | head -n1); \
|
|
if [ -n "$CERT_FILE" ]; then export NODE_EXTRA_CA_CERTS="$CERT_FILE"; fi; \
|
|
npm ci
|
|
|
|
COPY . .
|
|
|
|
# Vite incrusta las variables VITE_* en el bundle en tiempo de build, no en
|
|
# tiempo de ejecución — por eso se pasa como build arg y no como env var del
|
|
# contenedor final. Debe ser la IP/hostname real del servidor donde corre el
|
|
# backend dentro de la red de la empresa (no "localhost": eso resolvería a la
|
|
# máquina de cada usuario, no al servidor).
|
|
ARG VITE_API_URL
|
|
ENV VITE_API_URL=${VITE_API_URL}
|
|
|
|
RUN npm run build
|
|
|
|
FROM nginx:alpine
|
|
|
|
# Zona horaria del contenedor. Por defecto Perú (America/Lima); cambiar el
|
|
# build arg si se despliega para un cliente en otro país de Latinoamérica.
|
|
ARG TZ=America/Lima
|
|
ENV TZ=${TZ}
|
|
RUN apk add --no-cache tzdata \
|
|
&& ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \
|
|
&& echo ${TZ} > /etc/timezone
|
|
|
|
COPY --from=build /app/dist /usr/share/nginx/html
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
|
|
EXPOSE 80
|