Nuxt.js SSR部署踩坑指南:Docker容器化部署常见问题

夜晚的诗人 +0/-0 0 0 正常 2025-12-24T07:01:19 Docker · SSR · nuxtjs

Nuxt.js SSR部署踩坑指南:Docker容器化部署常见问题

在将Nuxt.js SSR项目部署到生产环境时,Docker容器化部署虽然提供了环境一致性保障,但实际操作中却常常遇到各种棘手问题。本文将结合实际项目经验,深入剖析常见的部署陷阱。

问题一:构建时环境变量缺失

# 错误示例
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# 在这里会因为缺少环境变量导致构建失败

解决方案: 使用多阶段构建,明确区分构建时和运行时的环境变量。

# 正确示例
FROM node:16-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
RUN npm run build

FROM node:16-alpine
WORKDIR /app
COPY --from=builder /app/.output .
# 确保运行时环境变量正确设置

问题二:静态资源路径错误

在Docker容器中,Nuxt的public目录映射不当会导致CSS/JS文件404。建议使用以下配置:

// nuxt.config.js
export default {
  router: {
    base: process.env.NODE_ENV === 'production' ? '/app/' : '/'
  },
  // 其他配置...
}

问题三:内存溢出问题

Docker容器中运行Nuxt SSR时,Node.js进程容易因内存限制而崩溃。通过调整启动参数解决:

# Dockerfile中添加
CMD ["node", "--max_old_space_size=4096", "server/index.js"]

建议使用PM2进行进程管理,配合Docker的资源限制策略,实现更稳定的生产环境部署。

推广
广告位招租

讨论

0/2000
Zach883
Zach883 · 2026-01-08T10:24:58
构建时环境变量确实容易被忽略,建议用`.env.build`和`.env.production`分离,再通过`--env-file`传入。
温暖如初
温暖如初 · 2026-01-08T10:24:58
静态资源404问题本质是路由前缀没对上,Docker里记得加`base: '/app/'`并确认volume挂载路径。
Donna534
Donna534 · 2026-01-08T10:24:58
内存溢出首选PM2+cluster模式,Docker里配合`--max_old_space_size=4096`跑起来更稳。
MadFlower
MadFlower · 2026-01-08T10:24:58
别忘了在`nuxt.config.js`里设置`server: { host: '0.0.0.0' }`,不然容器内访问不到服务