# syntax=docker/dockerfile:1.7 # Build from the monorepo root context so this image can use: # - apps/ingest-api # - packages/contracts FROM node:20-alpine AS base WORKDIR /workspace RUN corepack enable FROM base AS deps COPY package.json yarn.lock .yarnrc.yml ./ COPY .yarn/ ./.yarn/ COPY apps/ingest-api/package.json ./apps/ingest-api/package.json COPY packages/contracts/package.json ./packages/contracts/package.json # Use node_modules inside the container for predictable runtime behavior. RUN YARN_NODE_LINKER=node-modules yarn install --immutable FROM deps AS build COPY apps/ingest-api ./apps/ingest-api COPY packages/contracts ./packages/contracts RUN yarn workspace ingest-api build FROM node:20-alpine AS runtime WORKDIR /workspace ENV NODE_ENV=production RUN corepack enable COPY --from=build /workspace/package.json /workspace/yarn.lock /workspace/.yarnrc.yml ./ COPY --from=build /workspace/.yarn ./.yarn COPY --from=build /workspace/node_modules ./node_modules COPY --from=build /workspace/apps/ingest-api ./apps/ingest-api COPY --from=build /workspace/packages/contracts ./packages/contracts EXPOSE 3001 CMD ["yarn", "workspace", "ingest-api", "start"]