FROM node:24-bookworm-slim AS builder WORKDIR /app ENV NEXT_TELEMETRY_DISABLED=1 COPY package.json yarn.lock .yarnrc.yml ./ COPY .yarn/releases ./.yarn/releases RUN corepack enable && yarn install --immutable COPY . . RUN yarn build && mkdir -p public FROM node:24-bookworm-slim AS runner WORKDIR /app ENV NODE_ENV=production \ NEXT_TELEMETRY_DISABLED=1 \ HOSTNAME=0.0.0.0 \ PORT=3000 COPY --from=builder --chown=node:node /app/.next/standalone ./ COPY --from=builder --chown=node:node /app/.next/static ./.next/static COPY --from=builder --chown=node:node /app/public ./public USER node EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \ CMD node -e "fetch('http://127.0.0.1:3000/', { signal: AbortSignal.timeout(4000) }).then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))" CMD ["node", "server.js"]