37 lines
1.1 KiB
Docker
37 lines
1.1 KiB
Docker
# 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"]
|