# syntax=docker/dockerfile:1 # Shared builder base for all SvelteKit web apps # Contains pre-installed shared packages and pre-built dependencies # # Usage in web Dockerfiles: # FROM sveltekit-base:local AS builder # COPY apps/myapp/packages/shared ./apps/myapp/packages/shared # COPY apps/myapp/apps/web ./apps/myapp/apps/web # RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile # WORKDIR /app/apps/myapp/apps/web # RUN pnpm exec svelte-kit sync # RUN NODE_OPTIONS="--max-old-space-size=4096" pnpm build FROM node:20-alpine # Install pnpm RUN corepack enable && corepack prepare pnpm@9.15.0 --activate WORKDIR /app # Copy root workspace files COPY pnpm-workspace.yaml ./ COPY package.json ./ COPY pnpm-lock.yaml ./ COPY patches/ ./patches/ # Copy ALL shared packages used by SvelteKit web apps COPY packages/credit-operations ./packages/credit-operations COPY packages/qr-export ./packages/qr-export COPY packages/shared-api-client ./packages/shared-api-client COPY packages/shared-app-onboarding ./packages/shared-app-onboarding COPY packages/shared-auth ./packages/shared-auth COPY packages/shared-auth-ui ./packages/shared-auth-ui COPY packages/shared-branding ./packages/shared-branding COPY packages/shared-config ./packages/shared-config COPY packages/shared-error-tracking ./packages/shared-error-tracking COPY packages/shared-feedback-service ./packages/shared-feedback-service COPY packages/shared-feedback-types ./packages/shared-feedback-types COPY packages/shared-feedback-ui ./packages/shared-feedback-ui COPY packages/shared-help-content ./packages/shared-help-content COPY packages/shared-help-types ./packages/shared-help-types COPY packages/shared-help-ui ./packages/shared-help-ui COPY packages/shared-i18n ./packages/shared-i18n COPY packages/shared-icons ./packages/shared-icons COPY packages/shared-profile-ui ./packages/shared-profile-ui COPY packages/shared-pwa ./packages/shared-pwa COPY packages/shared-splitscreen ./packages/shared-splitscreen COPY packages/shared-stores ./packages/shared-stores COPY packages/shared-subscription-types ./packages/shared-subscription-types COPY packages/shared-subscription-ui ./packages/shared-subscription-ui COPY packages/shared-tags ./packages/shared-tags COPY packages/shared-tailwind ./packages/shared-tailwind COPY packages/shared-theme ./packages/shared-theme COPY packages/shared-theme-ui ./packages/shared-theme-ui COPY packages/shared-types ./packages/shared-types COPY packages/shared-ui ./packages/shared-ui COPY packages/shared-utils ./packages/shared-utils COPY packages/shared-vite-config ./packages/shared-vite-config COPY packages/spiral-db ./packages/spiral-db COPY packages/wallpaper-generator ./packages/wallpaper-generator # Install dependencies (shared packages only - app deps added later) RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store \ pnpm install --frozen-lockfile --ignore-scripts # Build shared packages in dependency order RUN cd packages/shared-vite-config && pnpm build \ && cd /app/packages/shared-auth && pnpm build || true \ && cd /app/packages/shared-error-tracking && pnpm build \ && cd /app/packages/shared-pwa && pnpm build \ && cd /app/packages/shared-tags && pnpm build \ && cd /app/packages/shared-api-client && pnpm build 2>/dev/null || true \ && cd /app/packages/credit-operations && pnpm build 2>/dev/null || true \ && cd /app/packages/spiral-db && pnpm build 2>/dev/null || true WORKDIR /app