You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js部署Docker时出现404但本地正常,配置报错求助

问题解决步骤

1. 修正next.config.js配置错误

你遇到的Invalid next.config.js options detected报错,是因为Next.js 13.1.1中output: 'standalone'不属于experimental子配置,它是顶层配置项。修改后的配置如下:

const nextConfig = {
  reactStrictMode: true,
  experimental: {
    appDir: true,
  },
  // 将output移到顶层,脱离experimental
  output: 'standalone',
}
module.exports = nextConfig;

这个配置错误会导致Docker容器内应用启动失败,进而引发路由404。

2. 调整Dockerfile适配standalone输出

使用output: 'standalone'后,Next.js会生成一个轻量的独立运行包,需要在Docker构建时正确复制相关文件,否则会出现静态资源或路由缺失的404。基于node:16-alpine的Dockerfile示例:

# 构建阶段:生成编译产物
FROM node:16-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# 运行阶段:仅复制必要文件,缩小镜像体积
FROM node:16-alpine AS runner
WORKDIR /app

# 复制独立运行核心包
COPY --from=builder /app/.next/standalone ./
# 复制静态资源(CSS、图片等)
COPY --from=builder /app/.next/static ./.next/static
# 复制public目录下的静态文件
COPY --from=builder /app/public ./public

EXPOSE 3000
ENV NODE_ENV production

# 启动独立服务
CMD ["node", "server.js"]

3. 正确执行Docker构建与运行命令

  • 构建镜像:
docker build -t your-next-app .
  • 运行容器(映射本地3000端口到容器3000端口):
docker run -p 3000:3000 your-next-app

4. 额外排查点

  • 确保本地与Docker容器使用的Node.js版本一致(均为16.x),避免版本差异引发的隐性问题;
  • 检查appDir路由结构是否符合Next.js 13规则:页面入口必须是page.js,动态路由需用[param]命名文件夹;
  • 查看Docker容器日志(docker logs <容器ID>),确认是否存在静态资源加载失败等其他报错。

内容的提问来源于stack exchange,提问作者SexyMF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:30:51