node.js - docker -/bin/sh : nodemon: not found

标签 node.js docker dockerfile nodemon

我有以下 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"
  }

最佳答案

试试下面的,

#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 开始之前添加构建命令。

#Dockerfile

FROM node:alpine

WORKDIR /backend

COPY package*.json .

RUN yarn

COPY . .

RUN yarn run build

EXPOSE 5000

CMD ["yarn", "start"]

关于node.js - docker -/bin/sh : nodemon: not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67353665/

相关文章:

docker run 提示找不到文件

docker - 如何在Docker中使用STOPSIGNAL指令?

node.js - 模拟 Postgresql now() 函数进行测试

docker - 我怎样才能让 docker 与我的用户一起工作(ubuntu)

node.js - Node 命令仅适用于 root 权限(sudo Node )

docker - Docker 和 gitlab-runner 中的 Gitlab CE

docker - 如何从 Kubernetes 中的 flink docker 镜像启动我的 jar 应用程序?

docker - docker 中基础镜像的性能影响

node.js - 控制特定的音频输出,例如减少来自Electron中浏览器的音频

arrays - 删除并修剪 aerospike udf 中的列表