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的资源限制策略,实现更稳定的生产环境部署。

讨论