NPM脚本失败,SH:1:<command>:在Docker Container

问题描述 投票:0回答:1

问题

当运行docker容器中的命令时,我会得到此错误:

npm run start:debug

运行
# npm run start:debug

> [email protected] start:debug /usr/src/api
> nest start -e "node --inspect-brk 0.0.0.0:9229" --watch -p tsconfig.json

sh: 1: nest: not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! [email protected] start:debug: `nest start -e "node --inspect-brk 0.0.0.0:9229" --watch -p tsconfig.json`
npm ERR! spawn ENOENT
表明我已经安装了:

npm ls --depth=0
为什么找不到Nest Cli二进制?
我的设置

这就是我发射外壳的方式:

@nestjs/cli

我的docker-compose文件:

# npm ls --depth=0 [email protected] /usr/src/api +-- @nestjs/[email protected] +-- @nestjs/[email protected] ...

我的dockerfile:

docker-compose -f docker-compose-base.yml -f docker-compose-dev.yml run api /bin/sh

the nest CLI需要在全球安装命令行才能工作。看起来您通过

# -base version: '3' services: api: build: . restart: on-failure volumes: - /usr/src/api/node_modules container_name: api # -dev version: '3' networks: # Use lb_lbnet network created by the load balancer repo (lb) # We do this because we need the load balance to resolve container names defined here to forward traffic # This is only needed for dev default: external: name: lb_lbnet services: db: image: postgres:11 container_name: db restart: always env_file: - ./db.env # uses POSTGRES_DB and POSTGRES_PASSWORD to create a fresh db with a password when first run volumes: - ./postgres-data:/var/lib/postgresql/data # only used to upload DB dump: # - ./backup:/tmp/backup api: restart: 'no' build: context: . args: NODE_ENV: development depends_on: - db ports: - 9229:9229 volumes: - ./:/usr/src/api - ./node_modules:/usr/src/api/node_modules # enable to debug hgezim-express-shopify-auth - ../../hgezim-express-shopify-auth:/usr/hgezim-express-shopify-auth env_file: - .env command: /bin/bash -c 'echo "Starting" && npm install && npm run start:debug'
在本地安装了它,因此没有将巢添加到路径中。要么将
FROM node:12 WORKDIR /usr/src/api COPY package*.json ./ ARG NODE_ENV=production ENV NODE_ENV=${NODE_ENV} RUN npm install # && npm ls --depth=0 # commented this out since it returns non-zero exit code COPY . . VOLUME [ "/usr/src/api/node_modules" ] RUN ["/usr/local/bin/npm", "run","lint"] RUN ["/usr/local/bin/npm", "run","build"] # not using an execution list here so we get shell variable substitution CMD /bin/bash -c 'npm run start:$NODE_ENV'

添加到您的Dockerfile,要么更改

package.json
脚本以使用本地版本(类似于
RUN npm install -g @nestjs/cli
node.js docker npm docker-compose
1个回答
1
投票

在我的情况下,VM中的Nestjs CLI缺少,所以我跑了

DockerPull Nestjs/cli
,它起作用了。 拉出Nestjs CLI图像,然后尝试运行Docker组成 - 建造。如果仍然存在问题,请将运行安装-G @nestjs/cli放在您的Docker文件中。现在必须运行良好。
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.