diff --git a/.env.example b/.env.example
index eb29e18c..58d0b56f 100644
--- a/.env.example
+++ b/.env.example
@@ -173,3 +173,4 @@
# ENABLE_CACHE=
# VERCEL_ENV=
# NEXT_PUBLIC_VERSION=
+# NEXT_BUILD_STANDALONE=
diff --git a/Dockerfile b/Dockerfile
index 12650294..2feec942 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,23 +1,42 @@
ARG NOTION_PAGE_ID
ARG NEXT_PUBLIC_THEME
-# Install dependencies only when needed
-FROM node:18-alpine3.18 AS deps
+FROM node:18-alpine3.18 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
-# Rebuild the source code only when needed
-FROM node:18-alpine3.18 AS builder
+# 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
-ENV NODE_ENV production
+# 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
@@ -26,4 +45,4 @@ EXPOSE 3000
# Uncomment the following line in case you want to disable telemetry.
# ENV NEXT_TELEMETRY_DISABLED 1
-CMD ["yarn", "start"]
+CMD ["node", "server.js"]
\ No newline at end of file
diff --git a/components/ExternalPlugins.js b/components/ExternalPlugins.js
index 4adb21ed..877222ad 100644
--- a/components/ExternalPlugins.js
+++ b/components/ExternalPlugins.js
@@ -8,6 +8,7 @@ import { GlobalStyle } from './GlobalStyle'
import { initGoogleAdsense } from './GoogleAdsense'
import Head from 'next/head'
+import ExternalScript from './ExternalScript'
import WebWhiz from './Webwhiz'
/**
@@ -258,10 +259,10 @@ const ExternalPlugin = props => {
{/* 提前连接到广告服务器 */}
-
+ />
>
)}
diff --git a/components/ExternalScript.js b/components/ExternalScript.js
index 00bd8521..7b791522 100644
--- a/components/ExternalScript.js
+++ b/components/ExternalScript.js
@@ -7,7 +7,7 @@ import { isBrowser } from '@/lib/utils'
* 传入参数将转为