Skip to content

Instantly share code, notes, and snippets.

@moinulmoin
Created June 26, 2024 09:47
Show Gist options
  • Select an option

  • Save moinulmoin/223624aacdcec240c239bf623489d8be to your computer and use it in GitHub Desktop.

Select an option

Save moinulmoin/223624aacdcec240c239bf623489d8be to your computer and use it in GitHub Desktop.

Revisions

  1. moinulmoin created this gist Jun 26, 2024.
    48 changes: 48 additions & 0 deletions Dockerfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    FROM node:lts-alpine AS base

    # Install dependencies only when needed
    FROM base AS deps
    # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
    RUN apk add --no-cache libc6-compat
    WORKDIR /app

    # Install dependencies based on the preferred package manager
    COPY package.json pnpm-lock.yaml* ./
    RUN corepack enable pnpm && pnpm i --frozen-lockfile


    # Rebuild the source code only when needed
    FROM base AS builder
    WORKDIR /app
    COPY --from=deps /app/node_modules ./node_modules
    COPY . .

    # Next.js collects completely anonymous telemetry data about general usage.
    # Learn more here: https://nextjs.org/telemetry
    # Uncomment the following line in case you want to disable telemetry during the build.
    ENV NEXT_TELEMETRY_DISABLED 1

    RUN corepack enable pnpm && pnpm run build

    # Production image, copy all the files and run next
    FROM base AS runner
    WORKDIR /app

    ENV NODE_ENV production
    # Uncomment the following line in case you want to disable telemetry during runtime.
    ENV NEXT_TELEMETRY_DISABLED 1

    COPY --from=builder /app/public ./public

    # Automatically leverage output traces to reduce image size
    # https://nextjs.org/docs/advanced-features/output-file-tracing
    COPY --from=builder /app/.next/standalone ./
    COPY --from=builder /app/.next/static ./.next/static

    EXPOSE 3000

    ENV PORT 3000

    # server.js is created by next build from the standalone output
    # https://nextjs.org/docs/pages/api-reference/next-config-js/output
    CMD node server.js