diff --git a/default/Dockerfile b/default/Dockerfile index 207bf93..69cd954 100644 --- a/default/Dockerfile +++ b/default/Dockerfile @@ -1,22 +1,17 @@ -FROM node:20-alpine AS development-dependencies-env -COPY . /app +FROM node:20-alpine AS base +USER node WORKDIR /app -RUN npm ci - -FROM node:20-alpine AS production-dependencies-env COPY ./package.json package-lock.json /app/ -WORKDIR /app -RUN npm ci --omit=dev -FROM node:20-alpine AS build-env +FROM base AS staging +RUN npm ci COPY . /app/ -COPY --from=development-dependencies-env /app/node_modules /app/node_modules -WORKDIR /app -RUN npm run build +# Build app and prepare `node_modules` for production +# This second install will remove the omitted deps automatically +RUN npm run build \ + && npm ci --omit=dev -FROM node:20-alpine -COPY ./package.json package-lock.json /app/ -COPY --from=production-dependencies-env /app/node_modules /app/node_modules -COPY --from=build-env /app/build /app/build -WORKDIR /app -CMD ["npm", "run", "start"] \ No newline at end of file +FROM base +COPY --from=staging /app/node_modules /app/node_modules +COPY --from=staging /app/build /app/build +CMD ["npm", "run", "start"]