Files
marco-trest-test/apps/crud-api/Dockerfile
T
2026-09-04 12:38:53 +08:00

37 lines
1.1 KiB
Docker

# 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"]