# syntax=docker/dockerfile:1.7 # Build from the monorepo root context so this image can use: # - apps/crud-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/crud-api/package.json ./apps/crud-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/crud-api ./apps/crud-api COPY packages/contracts ./packages/contracts RUN yarn workspace crud-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/crud-api ./apps/crud-api COPY --from=build /workspace/packages/contracts ./packages/contracts EXPOSE 3000 CMD ["yarn", "workspace", "crud-api", "start"]