# Vite uses native lightningcss bindings during production minification. Use the # glibc builder variant so pnpm selects the reproducibly available linux-x64-gnu # optional package; the small nginx runtime remains Alpine-based. FROM node:24-bookworm-slim@sha256:3638d9a6fe4030bd716be989438248074489337ba3275657f93595428be4fc03 AS build WORKDIR /src RUN npm install --global pnpm@10.33.0 COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY apps/web/package.json ./apps/web/package.json RUN pnpm install --frozen-lockfile COPY apps/web ./apps/web RUN pnpm --filter @itworx/pulse-web build FROM nginx:1.29-alpine@sha256:5616878291a2eed594aee8db4dade5878cf7edcb475e59193904b198d9b830de RUN apk upgrade --no-cache COPY deploy/nginx.conf /etc/nginx/nginx.conf COPY --from=build /src/apps/web/dist /usr/share/nginx/html RUN rm -rf /docker-entrypoint.d/* USER nginx HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 CMD ["sh", "-c", "wget -qO- http://127.0.0.1:8080/healthz >/dev/null"] EXPOSE 8080