FROM node:lts-alpine3.22 AS base HEALTHCHECK --interval=5s --timeout=10s --start-period=5s --retries=5 \ CMD sh -c 'wget --no-verbose --tries=1 --spider http://127.0.0.1:3333 || exit 1' # All deps stage FROM base AS deps WORKDIR /app ADD package.json package-lock.json ./ RUN npm ci FROM deps AS develop WORKDIR /app COPY --from=deps /app/node_modules /app/node_modules ENV NODE_ENV=development EXPOSE 3333 # Production only deps stage FROM base AS production-deps WORKDIR /app ADD package.json package-lock.json ./ RUN npm ci --omit=dev # Build stage FROM base AS build WORKDIR /app COPY --from=deps /app/node_modules /app/node_modules ADD . . RUN node ace build # Production stage FROM base ENV NODE_ENV=production WORKDIR /app COPY --from=production-deps /app/node_modules /app/node_modules COPY --from=build /app/build /app EXPOSE 8080 CMD ["node", "./bin/server.js"]