@@ -6,7 +6,6 @@ FROM node-22-alpine AS pruner
6
6
7
7
COPY --chown=node:node . .
8
8
RUN npx -q
[email protected] prune --scope=supervisor --docker
9
- RUN find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
10
9
11
10
FROM node-22-alpine AS base
12
11
@@ -17,26 +16,17 @@ COPY --from=pruner --chown=node:node /app/out/json/ .
17
16
COPY --from=pruner --chown=node:node /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
18
17
COPY --from=pruner --chown=node:node /app/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
19
18
20
- FROM base AS dev-deps
21
- RUN corepack enable
22
- ENV NODE_ENV development
23
-
24
- RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --no-frozen-lockfile
25
- RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --ignore-scripts --no-frozen-lockfile
26
-
27
- FROM base AS prod-deps
28
- RUN corepack enable
29
- ENV NODE_ENV production
19
+ RUN corepack enable && corepack prepare --activate
30
20
31
- RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --prod --no-frozen-lockfile
21
+ FROM base AS deps-fetcher
22
+ RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --frozen-lockfile
32
23
33
- COPY --from=pruner --chown=node:node /app/internal-packages/database/prisma/schema.prisma /app/internal-packages/database/prisma/schema.prisma
24
+ FROM deps-fetcher AS dev-deps
25
+ ENV NODE_ENV development
34
26
35
- ENV NPM_CONFIG_IGNORE_WORKSPACE_ROOT_CHECK true
36
- RUN pnpx
[email protected] generate --schema /app/internal-packages/database/prisma/schema.prisma
27
+ RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile --offline --ignore-scripts
37
28
38
29
FROM base AS builder
39
- RUN corepack enable
40
30
41
31
COPY --from=pruner --chown=node:node /app/out/full/ .
42
32
COPY --from=dev-deps --chown=node:node /app/ .
@@ -45,19 +35,19 @@ COPY --chown=node:node .configs/tsconfig.base.json .configs/tsconfig.base.json
45
35
COPY --chown=node:node scripts/updateVersion.ts scripts/updateVersion.ts
46
36
47
37
RUN pnpm run generate && \
48
- pnpm run -r --filter supervisor... build
38
+ pnpm run --filter supervisor... build&& \
39
+ pnpm deploy --filter=supervisor --prod /prod/supervisor
49
40
50
41
FROM base AS runner
51
42
52
- RUN corepack enable
53
43
ENV NODE_ENV production
54
44
55
- COPY --from=pruner --chown=node:node /app/out/full/ .
56
- COPY --from=prod-deps --chown=node:node /app .
57
- COPY --from=builder --chown=node:node /app/apps/supervisor ./apps/supervisor
45
+ COPY --from=builder /prod/supervisor /app/apps/supervisor
58
46
59
47
EXPOSE 8000
60
-
61
48
USER node
62
49
50
+ # ensure pnpm is installed during build and not silently downloaded at runtime
51
+ RUN pnpm -v
52
+
63
53
CMD [ "/usr/bin/dumb-init" , "--" , "pnpm" , "run" , "--filter" , "supervisor" , "start" ]
0 commit comments