dockerfile 911 octets
Newer Older
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"]