用 output: 'standalone' 出来的 .next/standalone 目录,理论上拷到服务器直接 node server.js 就能跑。但实际部署我踩了好几个坑。
public/和.next/static不会被打进 standalone,得手动拷。- 路径都是绝对的,换工作目录就报错,要用
process.env.PORT和__dirname修。 - 一些拼路径的库(比如某些 ORM 模板)会找不到文件。
写了个简单的 Dockerfile 收尾:
FROM node:20-alpine
WORKDIR /app
COPY ./.next/standalone ./
COPY ./.next/static ./.next/static
COPY ./public ./public
CMD ["node", "server.js"]
大家还有别的坑吗?