思路
Next.js output: 'export' 生成 out/,用 Nginx 容器对外提供静态文件。
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /app/out /usr/share/nginx/html
COPY deploy/nginx.conf /etc/nginx/conf.d/default.confCompose
services:
web:
build: .
ports:
- "8080:80"
restart: unless-stopped前面再挂一层宿主 Nginx/Caddy 做 443。
更新
git pull
docker compose build web
docker compose up -d web环境变量
静态导出时,NEXT_PUBLIC_* 必须在 build 参数里注入,运行时改无效。
一台 1 核小 VPS 通常就够跑文档站 + 反代。