FROM node:22.22.1-slim AS base
WORKDIR /app FROM base AS install
COPY ./package.json ./package-lock.json ./
RUN npm ci FROM install AS build
COPY . .
RUN npm run build FROM base AS deps
COPY ./package.json ./package-lock.json ./
RUN npm ci --omit=dev FROM gcr.io/distroless/nodejs24-debian13 AS prod
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=deps /app/node_modules ./node_modules/
EXPOSE 3000
CMD [ "/app/dist/main.js" ]
FROM node:22.22.1-slim AS base
WORKDIR /app FROM base AS install
COPY ./package.json ./package-lock.json ./
RUN npm ci FROM install AS build
COPY . .
RUN npm run build FROM base AS deps
COPY ./package.json ./package-lock.json ./
RUN npm ci --omit=dev FROM gcr.io/distroless/nodejs24-debian13 AS prod
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=deps /app/node_modules ./node_modules/
EXPOSE 3000
CMD [ "/app/dist/main.js" ]
FROM node:22.22.1-slim AS base
WORKDIR /app FROM base AS install
COPY ./package.json ./package-lock.json ./
RUN npm ci FROM install AS build
COPY . .
RUN npm run build FROM base AS deps
COPY ./package.json ./package-lock.json ./
RUN npm ci --omit=dev FROM gcr.io/distroless/nodejs24-debian13 AS prod
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=deps /app/node_modules ./node_modules/
EXPOSE 3000
CMD [ "/app/dist/main.js" ]
FROM node:22.22.1-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app FROM base AS install
COPY ./package.json ./pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile FROM install AS build
COPY . .
RUN pnpm run build FROM base AS deps
COPY ./package.json ./pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile --prod FROM gcr.io/distroless/nodejs24-debian13 AS prod
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=deps /app/node_modules ./node_modules/
EXPOSE 3000
CMD [ "dist/main.js" ]
FROM node:22.22.1-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app FROM base AS install
COPY ./package.json ./pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile FROM install AS build
COPY . .
RUN pnpm run build FROM base AS deps
COPY ./package.json ./pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile --prod FROM gcr.io/distroless/nodejs24-debian13 AS prod
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=deps /app/node_modules ./node_modules/
EXPOSE 3000
CMD [ "dist/main.js" ]
FROM node:22.22.1-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app FROM base AS install
COPY ./package.json ./pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile FROM install AS build
COPY . .
RUN pnpm run build FROM base AS deps
COPY ./package.json ./pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile --prod FROM gcr.io/distroless/nodejs24-debian13 AS prod
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=deps /app/node_modules ./node_modules/
EXPOSE 3000
CMD [ "dist/main.js" ]
FROM node:22.22.1-slim AS base
WORKDIR /app
RUN corepack enable FROM base AS build
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
COPY . .
RUN yarn build FROM base AS deps
COPY package.json yarn.lock ./
RUN corepack enable \
&& yarn workspaces focus --production FROM gcr.io/distroless/nodejs24-debian13:debug AS prod
WORKDIR /app
COPY --from=deps /root/.yarn/berry/cache /root/.yarn/berry/cache
COPY --from=deps /app/.pnp.cjs /app/.pnp.loader.mjs ./
COPY --from=deps /app/.yarn ./.yarn
COPY --from=build /app/dist ./dist
EXPOSE 3000
CMD [ "--require", "./.pnp.cjs", "dist/main.js" ]
FROM node:22.22.1-slim AS base
WORKDIR /app
RUN corepack enable FROM base AS build
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
COPY . .
RUN yarn build FROM base AS deps
COPY package.json yarn.lock ./
RUN corepack enable \
&& yarn workspaces focus --production FROM gcr.io/distroless/nodejs24-debian13:debug AS prod
WORKDIR /app
COPY --from=deps /root/.yarn/berry/cache /root/.yarn/berry/cache
COPY --from=deps /app/.pnp.cjs /app/.pnp.loader.mjs ./
COPY --from=deps /app/.yarn ./.yarn
COPY --from=build /app/dist ./dist
EXPOSE 3000
CMD [ "--require", "./.pnp.cjs", "dist/main.js" ]
FROM node:22.22.1-slim AS base
WORKDIR /app
RUN corepack enable FROM base AS build
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
COPY . .
RUN yarn build FROM base AS deps
COPY package.json yarn.lock ./
RUN corepack enable \
&& yarn workspaces focus --production FROM gcr.io/distroless/nodejs24-debian13:debug AS prod
WORKDIR /app
COPY --from=deps /root/.yarn/berry/cache /root/.yarn/berry/cache
COPY --from=deps /app/.pnp.cjs /app/.pnp.loader.mjs ./
COPY --from=deps /app/.yarn ./.yarn
COPY --from=build /app/dist ./dist
EXPOSE 3000
CMD [ "--require", "./.pnp.cjs", "dist/main.js" ]
FROM docker.io/oven/bun:1.3-alpine AS base
WORKDIR /usr/src/app FROM base AS install
COPY ./bun.lock ./package.json ./
RUN bun install --frozen-lockfile FROM install AS build
COPY . .
RUN bun run build FROM docker.io/oven/bun:1.3-alpine AS prod
WORKDIR /app
COPY --from=build /usr/src/app/dist ./dist
COPY --from=install /usr/src/app/node_modules ./node_modules
EXPOSE 3000
ENTRYPOINT [ "bun", "dist/main.js" ]
FROM docker.io/oven/bun:1.3-alpine AS base
WORKDIR /usr/src/app FROM base AS install
COPY ./bun.lock ./package.json ./
RUN bun install --frozen-lockfile FROM install AS build
COPY . .
RUN bun run build FROM docker.io/oven/bun:1.3-alpine AS prod
WORKDIR /app
COPY --from=build /usr/src/app/dist ./dist
COPY --from=install /usr/src/app/node_modules ./node_modules
EXPOSE 3000
ENTRYPOINT [ "bun", "dist/main.js" ]
FROM docker.io/oven/bun:1.3-alpine AS base
WORKDIR /usr/src/app FROM base AS install
COPY ./bun.lock ./package.json ./
RUN bun install --frozen-lockfile FROM install AS build
COPY . .
RUN bun run build FROM docker.io/oven/bun:1.3-alpine AS prod
WORKDIR /app
COPY --from=build /usr/src/app/dist ./dist
COPY --from=install /usr/src/app/node_modules ./node_modules
EXPOSE 3000
ENTRYPOINT [ "bun", "dist/main.js" ]
Benchmark 1: strace -c -f npm install Time (mean ± σ): 37.245 s ± 2.134 s [User: 8.432 s, System: 4.821 s] Range (min … max): 34.891 s … 41.203 s 10 runs System calls: 996,978 total (108,775 errors) Top syscalls: futex (663,158), write (109,412), epoll_pwait (54,496) Benchmark 2: strace -c -f bun install Time (mean ± σ): 5.612 s ± 0.287 s [User: 2.134 s, System: 1.892 s] Range (min … max): 5.238 s … 6.102 s 10 runs System calls: 165,743 total (3,131 errors) Top syscalls: openat(45,348), futex (762), epoll_pwait2 (298)
Benchmark 1: strace -c -f npm install Time (mean ± σ): 37.245 s ± 2.134 s [User: 8.432 s, System: 4.821 s] Range (min … max): 34.891 s … 41.203 s 10 runs System calls: 996,978 total (108,775 errors) Top syscalls: futex (663,158), write (109,412), epoll_pwait (54,496) Benchmark 2: strace -c -f bun install Time (mean ± σ): 5.612 s ± 0.287 s [User: 2.134 s, System: 1.892 s] Range (min … max): 5.238 s … 6.102 s 10 runs System calls: 165,743 total (3,131 errors) Top syscalls: openat(45,348), futex (762), epoll_pwait2 (298)
Benchmark 1: strace -c -f npm install Time (mean ± σ): 37.245 s ± 2.134 s [User: 8.432 s, System: 4.821 s] Range (min … max): 34.891 s … 41.203 s 10 runs System calls: 996,978 total (108,775 errors) Top syscalls: futex (663,158), write (109,412), epoll_pwait (54,496) Benchmark 2: strace -c -f bun install Time (mean ± σ): 5.612 s ± 0.287 s [User: 2.134 s, System: 1.892 s] Range (min … max): 5.238 s … 6.102 s 10 runs System calls: 165,743 total (3,131 errors) Top syscalls: openat(45,348), futex (762), epoll_pwait2 (298) - Yarn Plug'n'Play
- Bun's performance improvements
- How pnpm works
- How pnpm does hoisting
- Setting up Yarn for NestJS
- Source code