← 返回博客

Docker Compose 部署 Next.js 静态站到 VPS

多阶段构建、Nginx 托管 out 目录、以及零停机更新的简单流程。

TensorView Lab · 2026-09-06

思路

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.conf

Compose

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 通常就够跑文档站 + 反代。

也可以试试 TensorView 小工具集合