FROM node:20-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.4 --activate WORKDIR /app FROM base AS deps COPY package.json pnpm-lock.yaml ./ COPY packages/types/package.json packages/types/ RUN pnpm install --frozen-lockfile FROM deps AS builder COPY packages/types/ packages/types/ COPY src/ src/ COPY index.html vite.config.ts tsconfig.json ./ RUN pnpm build FROM nginx:alpine AS runner COPY nginx.conf /etc/nginx/conf.d/default.conf COPY --from=builder /app/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