FROM node:20-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.4 --activate WORKDIR /app # Install deps FROM base AS deps COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./ COPY apps/web/package.json apps/web/ COPY packages/types/package.json packages/types/ RUN pnpm install --frozen-lockfile # Build FROM deps AS builder ARG VITE_API_URL= ENV VITE_API_URL= COPY packages/types/ packages/types/ COPY apps/web/ apps/web/ RUN pnpm --filter @groombook/web build # Serve with nginx FROM nginx:alpine AS runner COPY apps/web/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=builder /app/apps/web/dist /usr/share/nginx/html EXPOSE 80 HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ CMD curl -f http://localhost:80/ || exit 1