ARG NODE_VERSION=18.0.0 FROM node:${NODE_VERSION}-alpine AS base WORKDIR /user/src/app EXPOSE 8080 FROM base as production ENV NODE_ENV=production COPY .env.production .env RUN --mount=type=bind,source=package.json,target=package.json \ --mount=type=bind,source=package-lock.json,target=package-lock.json \ --mount=type=cache,target=/root/.npm \ npm ci --omit=dev USER node COPY . . EXPOSE 8080 CMD ["node", "server.js"] FROM base as development ENV NODE_ENV=development COPY .env.development .env RUN --mount=type=bind,source=package.json,target=package.json \ --mount=type=bind,source=package-lock.json,target=package-lock.json \ --mount=type=cache,target=/root/.npm \ npm ci --include=dev USER node COPY . . CMD ["npm", "run", "start:dev"] #FROM node:20-alpine as build #WORKDIR /app #COPY package*.json ./ #RUN npm install --omit dev #COPY . . # #FROM node:20-alpine #WORKDIR /app #COPY --from=build /app /app #ENV NODE_ENV=production #COPY .env.production .env #EXPOSE 8080 #CMD ["node", "server.js"]