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

NestJS项目部署至K8s后无法正常启动,请求排查配置问题

NestJS项目部署K8s后无启动成功提示问题

本地执行以下命令可正常启动项目:

npm run start:test

但部署到K8s服务器后,日志仅输出:

[10:44:59 PM] Starting compilation in watch mode...
[10:45:22 PM] Found 0 errors. Watching for file changes.

之后无后续启动成功提示,项目无法正常运行。

Dockerfile配置

FROM node:16 AS builder

# Create app directory
WORKDIR /app

ENV NODE_ENV='prod'

# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
COPY tsconfig.build.json ./
COPY tsconfig.json ./
COPY ca-cert.pem ./
COPY prisma ./prisma/
COPY protos ./protos/

# Install app dependencies
RUN npm install
RUN npx prisma generate

COPY . .
RUN npm run build

FROM node:16-alpine
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/protos ./protos
COPY --from=builder /app/tsconfig.build.json ./
COPY --from=builder /app/tsconfig.json ./
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/ca-cert.pem ./

EXPOSE 3190
CMD [ "npm", "run", "start:test" ]

package.json启动脚本配置

"start:test": "nest start --watch",
"start:dev": "set NODE_ENV=dev && nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "nest start"

问题

是否遗漏了某些配置?


问题原因及解决方法

问题核心是启动命令不适合容器部署环境:

  1. --watch模式不适用于部署场景
    nest start --watch是开发环境的热重载模式,会持续监听本地文件变化触发重编译。但容器中dist目录是编译好的静态产物,没有文件变动触发,进程会一直卡在监听状态,不会启动服务。

  2. 应直接运行编译后的产物
    Dockerfile已经通过npm run build生成了dist目录,无需再执行编译流程,直接运行成品即可。

具体修改方案

  • 修改Dockerfile的启动命令
    将原CMD替换为生产模式启动命令:

    CMD [ "npm", "run", "start:prod" ]
    

    或者更高效地直接运行编译后的主文件:

    CMD [ "node", "dist/main.js" ]
    
  • 优化start:prod脚本
    当前start:prod的nest start会重复执行编译步骤,改为直接运行成品:

    "start:prod": "node dist/main.js"
    
  • 补充运行环境的NODE_ENV配置
    在node:16-alpine阶段添加环境变量,保证运行环境一致性:

    ENV NODE_ENV='prod'
    

修改后,容器启动时会直接运行编译好的服务,不再停留在监听模式,即可正常输出启动日志并对外提供服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:15:31