# Etapa 1: Construcción de dependencias FROM node:lts-bookworm AS builder # Configurar PNPM ENV SHELL=/bin/bash ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN npm install -g pnpm@8.15.1 && \ pnpm setup # Actualizar e instalar paquetes necesarios RUN apt-get -y --fix-missing update && \ apt-get -y --fix-missing upgrade && \ apt-get -y --no-install-recommends install \ apt-utils \ libgtk2.0-0 \ libgtk-3-0 \ libgbm-dev \ libnotify-dev \ libnss3 \ libxss1 \ libasound2 \ libxtst6 \ xauth \ xvfb \ chromium \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Establecer directorio de trabajo WORKDIR /app # Copiar archivos de configuración primero COPY package.json .npmrc pnpm-lock.yaml ./ # Verificar si node_modules existe en el contexto COPY node_modules ./node_modules # Instalar dependencias (solo si node_modules no está disponible) RUN if [ ! -d "node_modules" ]; then \ pnpm install --frozen-lockfile; \ fi # Copiar dependencias desde la etapa de construcción COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/test/cypress ./test/cypress COPY --from=builder /app/jsconfig.json ./jsconfig.json COPY --from=builder /app/quasar.extensions.json ./quasar.extensions.json COPY --from=builder /app/postcss.config.js ./postcss.config.js COPY --from=builder /app/cypress.config.js ./cypress.config.js # Configuración de Cypress ENV CYPRESS_BROWSER=chrome ENV CHROME_BIN=/usr/bin/chromium # Comando por defecto CMD ["npx", "cypress", "run"]