feat: Dockerfile improvement

This commit is contained in:
glazk0 2024-02-19 22:06:20 +01:00
parent f1889e0eab
commit 8ba01a5019
No known key found for this signature in database
GPG key ID: E45BF177782B9FEB

View file

@ -1,35 +1,37 @@
# Base Stage
FROM node:21-slim AS base
FROM node:18-alpine AS base ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN npm i -g pnpm RUN corepack enable
FROM base AS dependencies
WORKDIR /app WORKDIR /app
COPY package.json pnpm-lock.yaml ./ COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile # Dependencies Stage for Production
FROM base AS deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
# Build Stage
FROM base AS build FROM base AS build
WORKDIR /app RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
COPY . . COPY . .
COPY --from=dependencies /app/node_modules ./node_modules RUN pnpm run build
RUN pnpm build
RUN pnpm prune --prod
# Deploy Stage
FROM base AS deploy FROM base AS deploy
WORKDIR /app COPY --from=deps /app/node_modules /app/node_modules
COPY --from=build /app/build /app/build
COPY --from=build /app/build ./build # Run as non-root user
COPY --from=build /app/node_modules ./node_modules USER node
COPY --from=build /app/package.json ./package.json
ARG PORT=3000 ARG PORT=3000