FROM node:20-alpine AS node_upstream # base FROM node_upstream AS base RUN apk add --no-cache libc6-compat WORKDIR /srv/app ENV NEXT_TELEMETRY_DISABLED 1 # dev FROM base as dev EXPOSE 3000 ENV PORT 3000 ENV HOSTNAME localhost CMD ["sh", "-c", "npm install; npm run dev"] # builder FROM base AS builder COPY package.json package-lock.json ./ RUN npm clean-install --omit=dev COPY . . RUN npm run build # prod FROM node_upstream AS prod WORKDIR /srv/app ENV NODE_ENV production ENV NEXT_TELEMETRY_DISABLED 1 RUN addgroup --system --gid 1001 nodejs; \ adduser --system --uid 1001 nextjs RUN mkdir .next; \ chown nextjs:nodejs .next COPY --from=builder --link --chown=1001:1001 /srv/app/.next/standalone ./ COPY --from=builder --link --chown=1001:1001 /srv/app/.next/static ./.next/static USER nextjs EXPOSE 3000 ENV PORT 3000 ENV HOSTNAME "0.0.0.0" CMD ["node", "server.js"]