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

NestJS微服务Docker部署报错:无法找到@nestjs/cli模块

问题分析

从错误日志可见,容器实际执行的是npm run start:dev(即nest start --watch "reservations")命令,但你Dockerfile的生产阶段仅安装了生产依赖(pnpm install --prod),而@nestjs/cli属于开发依赖,因此出现MODULE_NOT_FOUND错误。同时Dockerfile生产阶段定义的启动命令是node dist/apps/reservations/main.js,说明容器启动时被覆盖了默认CMD,执行了开发环境的启动逻辑。

解决方案

方案1:使用生产环境启动命令

确保启动容器时执行Dockerfile中定义的生产启动命令,而非开发命令:

  • 直接启动容器:
docker run --name reservations-service your-image-tag
  • 若使用Docker Compose,检查docker-compose.yml的command字段,删除覆盖CMD的配置,或明确指定生产镜像阶段:
services:
  reservations:
    build:
      context: .
      dockerfile: apps/reservations/Dockerfile
      target: production
    # 移除如下类似配置,使用Dockerfile默认CMD
    # command: npm run start:dev

方案2:容器内运行开发模式(热重载)

若需在容器中开发并启用热重载,需切换到development阶段镜像,并挂载本地代码目录:

  1. 给Dockerfile的开发阶段添加启动命令:
FROM node:alpine As development

WORKDIR /usr/src/app

COPY package.json pnpm-lock.yaml tsconfig.json nest-cli.json ./
RUN npm install -g pnpm && pnpm install
COPY . .
RUN pnpm run build reservations

# 添加开发阶段启动命令
CMD ["pnpm", "run", "start:dev", "reservations"]
  1. 构建并启动开发镜像:
docker build --target development -t reservations-dev ./apps/reservations
docker run -v $(pwd)/apps/reservations:/usr/src/app/apps/reservations -v $(pwd)/libs:/usr/src/app/libs reservations-dev

方案3:优化Dockerfile(可选)

明确区分开发/生产镜像的构建目标,确保生产镜像仅保留运行时必要文件:

# auth服务Dockerfile优化版
FROM node:alpine As development

WORKDIR /usr/src/app

COPY package.json pnpm-lock.yaml tsconfig.json nest-cli.json ./
RUN npm install -g pnpm && pnpm install
COPY . .
RUN pnpm run build auth

# 开发阶段启动命令
CMD ["pnpm", "run", "start:dev", "auth"]

FROM node:alpine As production

ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /usr/src/app

COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm && pnpm install --prod
COPY --from=development /usr/src/app/dist ./dist

CMD ["node", "dist/apps/auth/main.js"]
验证步骤
  1. 重新构建镜像:docker build -t auth-service ./apps/auth
  2. 启动容器:docker run auth-service
  3. 查看容器日志,确认服务正常启动,无模块缺失报错

内容的提问来源于stack exchange,提问作者M.G.S SUPUNTHAKA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:20:10