mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
85 lines
3.0 KiB
Docker
85 lines
3.0 KiB
Docker
FROM node:24.15.0 AS base
|
|
RUN corepack enable && corepack prepare pnpm@latest-11 --activate
|
|
WORKDIR /app
|
|
|
|
FROM base AS deps
|
|
|
|
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
|
|
|
|
COPY apps/edr-freight-api/package.json ./apps/edr-freight-api/
|
|
COPY apps/edr-passenger-api/package.json ./apps/edr-passenger-api/
|
|
|
|
COPY apps/edr-freight-web/backoffice/package.json ./apps/edr-freight-web/backoffice/
|
|
COPY apps/edr-freight-web/portal/package.json ./apps/edr-freight-web/portal/
|
|
|
|
COPY apps/edr-passenger-web/backoffice/package.json ./apps/edr-passenger-web/backoffice/
|
|
COPY apps/edr-passenger-web/portal/package.json ./apps/edr-passenger-web/portal/
|
|
|
|
|
|
COPY packages/api-common/package.json packages/api-common/
|
|
|
|
COPY packages/config/eslint-config/package.json packages/config/eslint-config/
|
|
COPY packages/config/prettier-config/package.json packages/config/prettier-config/
|
|
COPY packages/config/tsconfig/package.json packages/config/tsconfig/
|
|
|
|
COPY packages/types/package.json packages/types/
|
|
COPY packages/ui-common/package.json packages/ui-common/
|
|
|
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store\
|
|
--mount=type=secret,id=npmrc,target=./.npmrc \
|
|
pnpm install --frozen-lockfile
|
|
FROM deps AS build
|
|
COPY . .
|
|
|
|
RUN pnpm run build --filter=\!"@edr/passenger-portal"
|
|
|
|
FROM base AS freight-api
|
|
# RUN corepack enable && corepack prepare pnpm@9.12.0 --activate
|
|
WORKDIR /app/apps/edr-freight-api
|
|
ENV NODE_ENV=production
|
|
|
|
COPY --from=deps /app/node_modules ./../../node_modules
|
|
COPY --from=deps /app/apps/edr-freight-api/node_modules ./node_modules
|
|
COPY --from=build /app/apps/edr-freight-api/dist ./dist
|
|
COPY --from=build /app/apps/edr-freight-api/package.json ./package.json
|
|
COPY --from=build /app/packages ./../../packages
|
|
|
|
EXPOSE 3001
|
|
CMD ["node", "dist/main.js"]
|
|
|
|
|
|
FROM base AS passenger-api
|
|
RUN apt-get update -y && apt-get install -y openssl
|
|
# RUN corepack enable && corepack prepare pnpm@9.12.0 --activate
|
|
WORKDIR /app/apps/edr-passenger-api
|
|
ENV NODE_ENV=production
|
|
|
|
# Use build-stage node_modules (not deps): `pnpm run build` runs `prisma generate`, which
|
|
# writes the real @prisma/client (enums, types). deps never runs generate, so @IsEnum(ServiceClass)
|
|
# and similar would see undefined at runtime if we copied deps only.
|
|
COPY --from=build /app/node_modules ./../../node_modules
|
|
COPY --from=build /app/apps/edr-passenger-api/node_modules ./node_modules
|
|
COPY --from=build /app/apps/edr-passenger-api/dist ./dist
|
|
COPY --from=build /app/apps/edr-passenger-api/package.json ./package.json
|
|
COPY --from=build /app/packages ./../../packages
|
|
|
|
EXPOSE 3001
|
|
CMD ["node", "dist/main.js"]
|
|
|
|
FROM build as passenger-migration
|
|
WORKDIR /app/apps/edr-passenger-api
|
|
CMD pnpm run prisma:migrate && pnpm run prisma:seed
|
|
|
|
|
|
|
|
FROM nginx:1.27-alpine AS freight-web-portal
|
|
COPY --from=build /app/apps/edr-freight-web/portal/dist /usr/share/nginx/html
|
|
EXPOSE 5173
|
|
CMD ["nginx", "-g", "daemon off;"]
|
|
|
|
|
|
FROM nginx:1.27-alpine AS freight-web-backoffice
|
|
COPY --from=build /app/apps/edr-freight-web/backoffice/dist /usr/share/nginx/html
|
|
EXPOSE 5173
|
|
CMD ["nginx", "-g", "daemon off;"]
|