59 lines
1.5 KiB
Docker
59 lines
1.5 KiB
Docker
# 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"]
|