spb/internetpressure
Public
TypeScript 36.3%
Python 31.8%
Go 18%
JavaScript 9.8%
Shell 1.9%
SQL 1.4%
CSS 0.5%
1# InternetPressure.io — web (Next 16 standalone). Build from the REPOSITORY ROOT:2# docker build -f apps/web/Dockerfile -t internetpressure-web .3# The dev mock (apps/web/mock) is excluded via apps/web/Dockerfile.dockerignore and is never part of the image.45FROM node:22-alpine AS deps6RUN corepack enable && corepack prepare pnpm@11 --activate7WORKDIR /repo8COPY apps/web/package.json apps/web/pnpm-lock.yaml apps/web/pnpm-workspace.yaml apps/web/9# pnpm rejects very recent releases by default (minimumReleaseAge, see pnpm-workspace.yaml): the lockfile is what we tested.10RUN cd apps/web && pnpm install --frozen-lockfile --ignore-scripts1112FROM node:22-alpine AS build13RUN corepack enable && corepack prepare pnpm@11 --activate14WORKDIR /repo15COPY --from=deps /repo/apps/web/node_modules apps/web/node_modules16COPY apps/web apps/web17# Static pages (/methodology, /api) tolerate an unreachable API at build time (they fall back to documented defaults).18ENV NEXT_TELEMETRY_DISABLED=119RUN cd apps/web && pnpm build2021FROM node:22-alpine AS runtime22ENV NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 PORT=8351 HOSTNAME=0.0.0.023WORKDIR /app24RUN addgroup -S web && adduser -S web -G web25# outputFileTracingRoot = repo root → the standalone server lives at apps/web/server.js26COPY --from=build --chown=web:web /repo/apps/web/.next/standalone ./27COPY --from=build --chown=web:web /repo/apps/web/.next/static ./apps/web/.next/static28COPY --from=build --chown=web:web /repo/apps/web/public ./apps/web/public29USER web30EXPOSE 835131CMD ["node", "apps/web/server.js"]32