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
FROM base AS dependencies
RUN corepack enable
WORKDIR /app
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
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 build
RUN pnpm prune --prod
RUN pnpm run build
# Deploy Stage
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
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/package.json ./package.json
# Run as non-root user
USER node
ARG PORT=3000
@ -37,4 +39,4 @@ ENV NODE_ENV=production PORT=$PORT
EXPOSE $PORT
CMD ["node", "build"]
CMD ["node", "build"]