Nodemon не работает, используя скрипт npm из package.json в Docker - PullRequest
1 голос
/ 26 октября 2019

Я работаю с NodeJS и Nodemon в Docker. Когда я пытаюсь запустить приложение NodeJS, используя команду nodemon непосредственно в файле docker compose, оно запускается.

Вот так (работает): [ 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

Я использую Docker в режиме Swarm

Вот мои оба файла

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"
  }
}

Ответы [ 3 ]

1 голос
/ 28 октября 2019

Просто добавьте "."чтобы определить путь в вашем package.json как это

"scripts": {
    "start": "node ./source/index.js",
    "dev": "nodemon ./source/index.js"
  }
0 голосов
/ 26 октября 2019

Попробуйте это решение:

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.

0 голосов
/ 26 октября 2019

Вам нужно добавить переменную окружения, чтобы указать npm при запуске nodemon C:\........\npm путь должен быть таким, и выбрать имя

...