Docker - /bin/sh: nodemon: 未找到

Posted

技术标签:

【中文标题】Docker - /bin/sh: nodemon: 未找到【英文标题】:Docker - /bin/sh: nodemon: not found 【发布时间】:2021-07-24 23:08:19 【问题描述】:

我有以下 docker 文件。

#Dockerfile

FROM node:alpine

WORKDIR /backend

COPY package*.json .

RUN yarn

COPY . .

EXPOSE 5000

CMD ["yarn", "dev"]

Nodemon 在主机上按预期工作,但在运行容器时显示以下错误消息。

yarn run v1.22.5
$ nodemon
/bin/sh: nodemon: not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Nodemon 未全局安装在主机中。在 Dockerfile 上添加RUN yarn add global nodemon 只是在容器错误中添加了一个额外的warning ../package.json: No license field

我目前有以下带有以下开发依赖项的 package.json 文件

# package.json
...
"scripts": 
    "build": "tsc -p .",
    "start": "node ./dist/src/index.js",
    "dev": "nodemon",
    "test": "echo \"Error: no test specified\" && exit 1"
  ,
  "devDependencies": 
    "@types/express": "^4.17.11",
    "@types/node": "^14.14.34",
    "nodemon": "^2.0.7",
    "ts-node": "^9.1.1",
    "typescript": "^4.2.3"
  ,
...

和 nodemon.json 一样


    "watch": [
      "src"
    ],
    "ext": "ts,json",
    "ignore": [
        "src/**/*.spec.ts"
    ],
    "exec": "yarn ts-node src/index.ts"
  

【问题讨论】:

你需要在容器上全局安装nodemon,或者通过某种方式使应用范围可用 在yarn dev之前,添加命令全局安装nodemon 您实际上是如何启动容器的? (一些常见的 Node/Docker 设置在运行时似乎会完全覆盖镜像内容,而且它们使用了 node_modules 树的卷,这会导致 Docker 忽略 package.json 文件中的更改。) 【参考方案1】:

试试下面,

#Dockerfile

FROM node:alpine

WORKDIR /backend

COPY package*.json .

RUN yarn

RUN yarn add global nodemon

COPY . .

EXPOSE 5000

CMD ["yarn", "dev"]

旁注:最好不要在生产中使用nodemon。在 start 脚本中提供构建文件。您必须在 yarn start 之前添加 build 命令。

#Dockerfile

FROM node:alpine

WORKDIR /backend

COPY package*.json .

RUN yarn

COPY . .

RUN yarn run build

EXPOSE 5000

CMD ["yarn", "start"]

【讨论】:

@Prajwol Adhikari,看看这个!! 这行得通。但令人惊讶的是,在我删除主机中的 node_modules 文件夹后,我的原始代码也能正常工作。

以上是关于Docker - /bin/sh: nodemon: 未找到的主要内容,如果未能解决你的问题,请参考以下文章

docker容器内的Nodemon

Docker /bin/bash: nodemon: 找不到命令

nodemon 不使用 docker 充值

Nodemon 在 Windows Docker 环境中不重启

将 nodemon 与 docker 和 docker-compose 一起使用

Docker 镜像错误:“/bin/sh: 1: [python,: not found”