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

Docker构建时yarn build报错:nest命令未找到

nest命令未找到的原因与解决办法

问题原因

你在执行yarn install时添加了--production参数,这个参数会让Yarn只安装package.json里dependencies中的包,跳过devDependencies。而nest命令是由@nestjs/cli提供的,这个包一般被放在devDependencies中,所以容器里没有安装它,导致执行yarn build时提示命令找不到。

解决方案

推荐使用多阶段构建,既完成编译构建,又能保证最终生产镜像的轻量化:

# 第一阶段:构建编译产物
FROM node:16.14.2-alpine AS builder
WORKDIR /app

COPY package.json yarn.lock ./
# 安装所有依赖(包括devDependencies)
RUN yarn install --frozen-lockfile

COPY . .
# 执行构建命令
RUN yarn build

# 第二阶段:生产镜像
FROM node:16.14.2-alpine
ENV NODE_ENV=production
WORKDIR /app

COPY package.json yarn.lock ./
# 只安装生产依赖
RUN yarn install --frozen-lockfile --production

# 从构建阶段复制编译好的dist目录
COPY --from=builder /app/dist ./dist

CMD ["yarn", "start:prod"]

其他可选方案(不推荐)

  • 临时去掉--production参数执行yarn install,完成构建后再手动删除devDependencies,但会导致镜像体积变大。
  • 将@nestjs/cli移到package.json的dependencies中,这样生产依赖会包含它,但没必要在生产环境保留构建工具,会增加镜像冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:43:11