Files
NotionNext/Dockerfile
anime 35714531c7 build(nodejs): enforce Node.js >=20 in engines and .nvmrc
reason: https://github.com/tangly1024/NotionNext/pull/3374#issuecomment-2879323753

BREAKING CHANGE:
- Node.js 20 is now the minimum required version
- Updated .nvmrc and package.json "engines"
- Please upgrade local environment or CI setup
2025-05-14 17:08:57 +08:00

48 lines
1.3 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
ARG NOTION_PAGE_ID
ARG NEXT_PUBLIC_THEME
FROM node:20-alpine AS base
# 1. 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
COPY package.json ./
RUN yarn install --frozen-lockfile
# 2. Rebuild the source code only when needed
FROM base AS builder
ARG NOTION_PAGE_ID
ENV NEXT_BUILD_STANDALONE=true
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN yarn build
# 3. Production image, copy all the files and run next
FROM base AS runner
ENV NODE_ENV=production
WORKDIR /app
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
# 个人仓库把将配置好的.env.local文件放到项目根目录可自动使用环境变量
# COPY --from=builder /app/.env.local ./
EXPOSE 3000
# 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.
# ENV NEXT_TELEMETRY_DISABLED 1
CMD ["node", "server.js"]