# syntax=docker/dockerfile:1 # Build from the repo root: docker build -f infra/docker/web.Dockerfile . FROM node:20-alpine AS base RUN corepack enable WORKDIR /app # ---- Install workspace dependencies (cached until a package.json changes) ---- FROM base AS deps COPY pnpm-workspace.yaml pnpm-lock.yaml package.json turbo.json tsconfig.base.json ./ COPY apps/api/package.json apps/api/ COPY apps/web/package.json apps/web/ COPY apps/ingest/package.json apps/ingest/ COPY packages/counter/package.json packages/counter/ COPY packages/models/package.json packages/models/ COPY packages/registry/package.json packages/registry/ COPY packages/widget/package.json packages/widget/ RUN pnpm install --frozen-lockfile # ---- Build the Next.js app and its workspace dependencies -------------------- FROM deps AS build COPY . . RUN pnpm turbo build --filter=@earth-now/web... # ---- Runtime ------------------------------------------------------------------ FROM base AS runtime ENV NODE_ENV=production COPY --from=build /app /app EXPOSE 3000 CMD ["pnpm", "--filter", "@earth-now/web", "start"]