Skip to content

Instantly share code, notes, and snippets.

@adiwids
Created September 12, 2023 04:44
Show Gist options
  • Save adiwids/87a167b1436ae2b2bc307d4a394dbe62 to your computer and use it in GitHub Desktop.
Save adiwids/87a167b1436ae2b2bc307d4a394dbe62 to your computer and use it in GitHub Desktop.
Dockerfile NextJS 13 production container
FROM node:18-bookworm AS DEPS_IMAGE
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install --no-package-lock
RUN npm prune --production
FROM node:18-bookworm AS BUILD_IMAGE
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /app
COPY . .
COPY --from=DEPS_IMAGE /app/node_modules ./node_modules
RUN npm run build
FROM node:18-bookworm AS RUNNER_IMAGE
ARG APP_API_HOST
ARG APP_PORT
ARG USER
ARG USERGROUP
ENV REACT_APP_API_URL=${APP_API_HOST}
ENV PORT=${APP_PORT}
RUN groupadd --gid ${USERGROUP} nodeapp
RUN useradd -G nodeapp -d /home/nextapp ${USER}
USER ${USER}
WORKDIR /home/nextapp
COPY --from=BUILD_IMAGE /app/package.json ./
COPY --from=BUILD_IMAGE /app/node_modules ./node_modules
COPY --from=BUILD_IMAGE --chown=${USER}:${USERGROUP} /app/.next ./.next
COPY --from=BUILD_IMAGE /app/public ./public
EXPOSE ${APP_PORT}
CMD ["npm", "start"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment