# ========================== # Etapa de build # ========================== FROM node:22-alpine AS build # Directorio de trabajo WORKDIR /app # Configurar npm para trabajar con certificados autofirmados e instalar pnpm RUN npm config set strict-ssl false && \ npm install -g pnpm # Copiar archivos de dependencias COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ # Instalar dependencias con pnpm RUN pnpm install --frozen-lockfile ARG VITE_API_URL ENV VITE_API_URL=${VITE_API_URL} # Copiar el resto del código COPY . . # Construir el proyecto RUN pnpm run build # ========================== # Etapa de ejecución con Node.js # ========================== FROM node:22-alpine AS runtime WORKDIR /app # Crear usuario no-root para seguridad antes de copiar con --chown RUN addgroup -g 1001 -S nodejs RUN adduser -S svelte -u 1001 # Copiar solo archivos necesarios para producción y aplicar propietario en la copia COPY --from=build --chown=svelte:nodejs /app/build ./build COPY --from=build --chown=svelte:nodejs /app/package.json ./ COPY --from=build --chown=svelte:nodejs /app/node_modules ./node_modules USER svelte # Puerto para SvelteKit con adapter-node EXPOSE 3000 # Variables de entorno ENV NODE_ENV=production ENV PORT=3000 ENV HOST=0.0.0.0 # Ejecutar aplicación con Node.js CMD ["node", "build"]