【问题标题】:Nodemon not working using npm script from package.json on DockerNodemon 无法在 Docker 上使用 package.json 中的 npm 脚本
【发布时间】:2020-02-22 12:34:31
【问题描述】:

我在 Docker 上使用 NodeJS 和 Nodemon。当我尝试直接在 docker compose 文件中使用 nodemon 命令运行我的 NodeJS 应用程序时,它会运行。

像这样(工作):[docker-compose]

command: nodemon source/index.js

但是当我使用 package.json 中的脚本时,它不起作用

像这样(不工作):[docker-compose]

command: npm run dev

我的 package.json 文件在哪里

"scripts": {
    "start": "node source/index.js",
    "dev": "nodemon source/index.js"
  }

我尝试了不同的方法,当我在没有 nodemon 的情况下简单地运行启动脚本时,它可以工作

像这样(工作):[docker-compose]

command: npm run start

但是当我尝试再次使用 dev 并在其中使用 nodemon 命令时,它不起作用。容器不会启动。我也尝试了以下方法,它也有效

像这样(工作):[docker-compose]

command: nodemon --exec npm start

我还是不明白,为什么 nodemon 命令在脚本 dev

中不起作用

我在 Swarm 模式下使用 Docker

这是我的两个文件

docker-compose

version: '3.7'

services:

    node-service:

        image: node-img:1.0

        ports:
        - 4000:4000

        working_dir: "/node-dir"

        volumes:
        - ./node-dir/source:/node-dir/source

        networks:
            - ness-net

        command: npm run dev

networks:

    ness-net:

package.json

{
  "name": "node-pkg",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node source/index.js",
    "dev": "nodemon source/index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "nodemon": "^1.19.4"
  }
}

【问题讨论】:

    标签: node.js docker package.json nodemon npm-scripts


    【解决方案1】:

    只需添加“。”像这样在你的 package.json 中定义路径

    "scripts": {
        "start": "node ./source/index.js",
        "dev": "nodemon ./source/index.js"
      }
    

    【讨论】:

      【解决方案2】:

      试试这个解决方案:

      services:
       node-app:
        container_name: node-app
        image: node:latest
        restart: always
        volumes:
          - ./node/source:home/node/source
        working_dir: /home/node/source
        ports:
         - 4000:4000
        networks:
         - main-network
        command: "tail -f /dev/null && npm start"
        depends_on:
         - db
        logging:
          driver: "json-file"
          options:
           max-file: "4"
           max-size: "100m
      

      这里是 package.json

      "main": "index.js",
      "scripts": {
        "preinstall": "npm i nodemon -g",
        "start": "nodemon index.js",
      }
      

      请确保工作目录中应该有 index.js 和 package.json。

      【讨论】:

      • 如果我不想将 index.js 和 package.json 放在同一个工作目录下怎么办?
      【解决方案3】:

      运行nodemon时需要添加一个环境变量指向npm C:\........\npm路径应该是这样的,取个名字

      【讨论】:

      • 我在 docker 中运行它,那么我应该在哪里添加环境变量?在 Docker 容器中?
      猜你喜欢
      • 2016-06-02
      • 2016-12-05
      • 2020-01-22
      • 2017-05-10
      • 2014-06-26
      • 2021-11-12
      • 2018-09-04
      • 2020-03-04
      • 1970-01-01
      相关资源
      最近更新 更多