# syntax=docker/dockerfile:1 # Build from the repo root: docker build -f infra/docker/api.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 api and its workspace dependencies ---------------------------- FROM deps AS build COPY . . RUN pnpm turbo build --filter=@earth-now/api... # ---- Runtime ------------------------------------------------------------------ FROM base AS runtime ENV NODE_ENV=production COPY --from=build /app /app EXPOSE 4000 CMD ["node", "apps/api/dist/index.js"]