# --- STAGE 1: Base build environment --- FROM node:lts-alpine3.23 AS base WORKDIR /app COPY package.json package-lock.json ./ # Install dependencies RUN npm ci --legacy-peer-deps COPY . . # Install necessary dependencies for sharp used by next/image (for image optimization) RUN apk add --no-cache libc6-compat # --- STAGE 2: Environments # Development FROM base AS development ARG ENVIRONMENT=development ENV NODE_ENV=$ENVIRONMENT EXPOSE 3000 CMD ["npm", "run", "dev"] # Production FROM base AS build ARG ENVIRONMENT=production ENV NODE_ENV=$ENVIRONMENT RUN npm run build #--- STAGE 3: Production runtime environment FROM node:lts-alpine3.23 AS production WORKDIR /app COPY --from=build /app/.next ./.next COPY --from=build /app/package.json ./package.json COPY --from=build /app/package-lock.json ./package-lock.json COPY --from=build /app/public ./public COPY --from=build /app/node_modules ./node_modules EXPOSE 3000 CMD ["npm", "run", "start"]