36 lines
977 B
Docker
36 lines
977 B
Docker
|
|
FROM node:22-alpine AS base
|
||
|
|
RUN apk add --no-cache libc6-compat
|
||
|
|
RUN corepack enable && corepack prepare pnpm@9.12.0 --activate
|
||
|
|
|
||
|
|
FROM base AS deps
|
||
|
|
WORKDIR /app
|
||
|
|
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml* ./
|
||
|
|
COPY packages/shared/package.json packages/shared/
|
||
|
|
COPY apps/api/package.json apps/api/
|
||
|
|
COPY apps/web/package.json apps/web/
|
||
|
|
RUN pnpm install --frozen-lockfile
|
||
|
|
|
||
|
|
FROM deps AS build
|
||
|
|
WORKDIR /app
|
||
|
|
COPY tsconfig.base.json ./
|
||
|
|
COPY packages packages
|
||
|
|
COPY apps apps
|
||
|
|
RUN pnpm -F @leetete/web build
|
||
|
|
|
||
|
|
FROM base AS runtime
|
||
|
|
WORKDIR /app
|
||
|
|
ENV NODE_ENV=production
|
||
|
|
ENV PORT=3000
|
||
|
|
ENV STATIC_DIR=/app/public
|
||
|
|
|
||
|
|
COPY --from=build /app/node_modules ./node_modules
|
||
|
|
COPY --from=build /app/pnpm-workspace.yaml /app/package.json /app/pnpm-lock.yaml* ./
|
||
|
|
COPY --from=build /app/tsconfig.base.json ./
|
||
|
|
COPY --from=build /app/packages packages
|
||
|
|
COPY --from=build /app/apps/api apps/api
|
||
|
|
COPY --from=build /app/apps/web/dist public
|
||
|
|
|
||
|
|
EXPOSE 3000
|
||
|
|
|
||
|
|
CMD ["pnpm", "--filter", "@leetete/api", "start"]
|