|
1 | 1 | # Stage 1: Build the application |
2 | | -FROM node:18-alpine as build |
3 | | -# Install OpenSSL |
4 | | -RUN apk add --no-cache openssl |
5 | | -RUN npm install -g pnpm --ignore-scripts \ |
6 | | - && apk update \ |
7 | | - && apk add openssh-client \ |
8 | | - && apk add aws-cli \ |
9 | | - && apk add docker \ |
10 | | - && apk add docker-compose |
11 | | - |
12 | | -RUN npm install -g pnpm |
13 | | -# Set the working directory |
| 2 | +FROM node:24-alpine3.21 AS build |
| 3 | +RUN apk update && apk upgrade && apk add --no-cache \ |
| 4 | + openssl=3.3.3-r0 \ |
| 5 | + openssh-client \ |
| 6 | + aws-cli \ |
| 7 | + docker \ |
| 8 | + docker-compose \ |
| 9 | + && rm -rf /var/cache/apk/* |
| 10 | +RUN npm install -g pnpm@9.15.3 --ignore-scripts |
14 | 11 | WORKDIR /app |
15 | | - |
16 | | -# Copy package.json and package-lock.json |
17 | | -COPY package.json ./ |
18 | | -COPY pnpm-workspace.yaml ./ |
19 | | - |
| 12 | +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ |
20 | 13 | ENV PUPPETEER_SKIP_DOWNLOAD=true |
21 | | - |
22 | | -# Install dependencies while ignoring scripts (including Puppeteer's installation) |
23 | | -RUN pnpm i --ignore-scripts |
24 | | - |
25 | | -# Copy the rest of the application code |
| 14 | +RUN pnpm i --frozen-lockfile --ignore-scripts |
26 | 15 | COPY . . |
27 | | -# RUN cd libs/prisma-service && npx prisma migrate deploy && npx prisma generate |
28 | 16 | RUN cd libs/prisma-service && npx prisma generate |
29 | | - |
30 | | -# Build the user service |
31 | 17 | RUN pnpm run build agent-service |
| 18 | +RUN pnpm prune --prod |
32 | 19 |
|
33 | 20 | # Stage 2: Create the final image |
34 | | -FROM node:18-alpine |
35 | | -# Install OpenSSL |
36 | | -RUN apk add --no-cache openssl |
37 | | -RUN npm install -g pnpm --ignore-scripts \ |
38 | | - && apk update \ |
39 | | - && apk add openssh-client \ |
40 | | - && apk add aws-cli \ |
41 | | - && apk add docker \ |
42 | | - && apk add docker-compose |
43 | | - |
44 | | -# RUN npm install -g pnpm |
45 | | -# Set the working directory |
| 21 | +FROM node:24-alpine3.21 |
| 22 | +RUN apk update && apk upgrade && apk add --no-cache \ |
| 23 | + openssl=3.3.3-r0 \ |
| 24 | + openssh-client \ |
| 25 | + aws-cli \ |
| 26 | + docker \ |
| 27 | + docker-compose \ |
| 28 | + && rm -rf /var/cache/apk/* \ |
| 29 | + && addgroup -g 1001 -S nodejs \ |
| 30 | + && adduser -S nextjs -u 1001 |
46 | 31 | WORKDIR /app |
47 | | - |
48 | | -# Copy the compiled code from the build stage |
49 | 32 | COPY --from=build /app/dist/apps/agent-service/ ./dist/apps/agent-service/ |
50 | | - |
51 | | -# Copy the libs folder from the build stage |
52 | 33 | COPY --from=build /app/libs/ ./libs/ |
53 | | -#COPY --from=build /app/package.json ./ |
54 | | -COPY --from=build /app/node_modules ./node_modules |
55 | | - |
56 | | -# Set the command to run the microservice |
57 | | -CMD ["sh", "-c", "cd libs/prisma-service && npx prisma migrate deploy && npx prisma generate && cd ../.. && node dist/apps/agent-service/main.js"] |
| 34 | +COPY --from=build /app/node_modules ./node_modules |
| 35 | +USER nextjs |
| 36 | +CMD ["node", "dist/apps/agent-service/main.js"] |
0 commit comments