1
- FROM node:20 AS base
1
+ FROM node:20-slim AS base
2
2
ENV PNPM_HOME="/pnpm"
3
3
ENV PATH="$PNPM_HOME:$PATH"
4
- RUN corepack enable
5
- COPY . /app
6
- WORKDIR /app
4
+ RUN corepack enable pnpm
7
5
8
- FROM base AS prod-deps
9
- RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
10
6
11
- FROM base AS build
7
+ # Express
8
+ FROM base AS deps-express
9
+ WORKDIR /home/node/repo
10
+
11
+ COPY ./package.json ./pnpm-lock.yaml ./pnpm-workspace.yaml ./
12
+ COPY ./examples/express/package.json ./examples/express/
13
+ COPY ./lib/package.json ./lib/
14
+ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
15
+
16
+
17
+ FROM base AS build-express
18
+ WORKDIR /home/node/repo
19
+ COPY --from=deps-express /home/node/repo ./
20
+
21
+ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
22
+
23
+ COPY . /home/node/repo
24
+
25
+ RUN pnpm --filter !esi-next run build
26
+ RUN pnpm deploy --filter esi-express --prod /home/node/esi-express
27
+
28
+ FROM base AS esi-express
29
+ COPY --from=build-express /home/node/esi-express /home/node/esi-express
30
+ WORKDIR /home/node/esi-express
31
+ USER node
32
+ EXPOSE 3000
33
+ CMD [ "node" , "dist/server.js" ]
34
+
35
+
36
+
37
+ # Nextjs
38
+ FROM base AS deps-next
39
+ WORKDIR /home/node/repo
40
+
41
+ COPY ./package.json ./pnpm-lock.yaml ./pnpm-workspace.yaml ./
42
+ COPY ./examples/next/package.json ./examples/next/
43
+ COPY ./lib/package.json ./lib/
12
44
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
13
- RUN pnpm run -r build
14
45
15
- FROM base AS lib
16
- COPY --from=prod-deps /app/lib/node_modules/ /app/lib/node_modules
17
- COPY --from=build /app/lib/dist /app/lib/dist
18
46
19
- FROM lib AS express
20
- COPY --from=prod-deps /app/examples/express/node_modules/ /app/examples/express/node_modules
21
- COPY --from=build /app/examples/express/dist /app/examples/express/dist
22
- WORKDIR /app/examples/express
47
+ FROM base AS build-next
48
+ WORKDIR /home/node/repo
49
+ COPY --from=deps-next /home/node/repo ./
50
+ COPY . /home/node/repo
51
+
52
+ ENV NEXT_TELEMETRY_DISABLED 1
53
+ RUN pnpm --filter !esi-express run build
54
+ RUN pnpm deploy --filter esi-next --prod /home/node/esi-next
55
+
56
+
57
+ FROM base AS esi-next
58
+ WORKDIR /home/node/esi-next
59
+
60
+ ENV NODE_ENV production
61
+ ENV NEXT_TELEMETRY_DISABLED 1
62
+
63
+ # Set the correct permission for prerender cache
64
+ RUN mkdir .next
65
+ RUN chown node:node .next
66
+ COPY --from=build-next --chown=node:node /home/node/esi-next/public ./public
67
+ COPY --from=build-next --chown=node:node /home/node/esi-next/node_modules ./node_modules
68
+ COPY --from=build-next --chown=node:node /home/node/esi-next/.next/standalone ./
69
+ COPY --from=build-next --chown=node:node /home/node/esi-next/dist ./dist
70
+ COPY --from=build-next --chown=node:node /home/node/esi-next/.next/static ./.next/static
71
+
72
+ USER node
23
73
EXPOSE 3000
24
- CMD [ "pnpm" , "start" ]
25
-
26
- FROM lib AS next
27
- COPY --from=prod-deps /app/packages/app2/node_modules/ /app/packages/app2/node_modules
28
- COPY --from=build /app/packages/app2/dist /app/packages/app2/dist
29
- WORKDIR /app/packages/app2
30
- EXPOSE 30001
31
- CMD [ "pnpm" , "start" ]
74
+ CMD [ "node" , "dist/server.js" ]
0 commit comments