nodemon不向docker充电

时间:2018-07-25 12:14:26

标签: docker docker-compose dockerfile nodemon

我正在尝试使用docker将api挂载到js节点上,一切正常,但是不幸的是,当我对文件进行更改时,docker无法更新文件,nodemon不更新服务器,这迫使我始终重新启动docker-compose up --build命令。

我的树:

|- api
  |- src
    |- app.js
    |- index.js
    |- routes.js
  |- .dockerignore
  |- .editorconfig
  |- .env.example
  |- .package.json
|- app
|- docker-compose.yml

我的docker-compose.yml:

version: '3'

services:
  api:
    build: ./api
    command: npm run dev
    volumes:
      - ./api:/app
    ports:
      - 3001:3000
    restart: always
    environment:
      - "NODE_ENV=development"
  # front:
  #   build: ./front
  #   volumes:
  #     - ./front:/usr/src/app
  #   ports:
  #     - 3000:3000

我在/ api中的dockerfile:

FROM node:10

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

# Bundle app source
COPY . .


EXPOSE 3000
CMD [ "npm", "run", "dev" ]

我的package.json:

{
  "name": "exampleApp",
  "version": "1.0.0",
  "description": "an example app",
  "author": "Jean Bon <jeanbon@gmail.com>",
  "license": "MIT",
  "main": "dist/index.js",
  "scripts": {
    "prestart": "npm run -s build",
    "start": "node dist/index.js",
    "dev": "nodemon src/index.js --exec \"node -r dotenv/config -r babel-register\"",
    "clean": "rimraf dist",
    "build": "npm run clean && mkdir -p dist && babel src -s -D -d dist",
    "test": "jest --watch",
    "lint": "esw -w src test"
  },
  "keywords": [
    "express",
    "babel",
    "boilerplate",
    "scaffold",
    "es6",
    "es2015",
    "es2016",
    "es2017",
    "jest",
    "eslint"
  ],
  "dependencies": {
    "babel-cli": "^6.26.0",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "body-parser": "^1.18.2",
    "express": "^4.16.2",
    "pug": "^2.0.0-beta11",
    "rimraf": "^2.6.2"
  },
  "devDependencies": {
    "babel-eslint": "^8.0.3",
    "babel-jest": "^21.2.0",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "babel-register": "^6.26.0",
    "dotenv": "^4.0.0",
    "eslint": "^4.12.1",
    "eslint-plugin-import": "^2.8.0",
    "eslint-plugin-jest": "^21.3.2",
    "eslint-watch": "^3.1.3",
    "jest": "^21.2.1",
    "nodemon": "^1.12.1",
    "supertest": "^3.0.0"
  },
  "babel": {
    "presets": [
      [
        "env",
        {
          "targets": {
            "node": "current"
          }
        }
      ]
    ],
    "plugins": [
      "transform-object-rest-spread",
      "transform-class-properties"
    ]
  },
  "eslintConfig": {
    "parser": "babel-eslint",
    "plugins": [
      "import",
      "jest"
    ],
    "parserOptions": {
      "ecmaVersion": 2017,
      "sourceType": "module"
    },
    "env": {
      "node": true,
      "jest": true
    },
    "extends": [
      "eslint:recommended"
    ],
    "rules": {
      "jest/no-focused-tests": 2,
      "jest/no-identical-title": 2
    }
  },
  "jest": {
    "testEnvironment": "node"
  }
}

在我的终端中,nodemon可以工作,但是当我进行修改时,什么都没有移动:

docker-compose log picture

在此先感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

尝试使用-L标志:nodemon -L app.js

运行nodemon

来自documentation

答案 1 :(得分:0)

您必须在脚本上添加--watch。试试这个:

  

nodemon --watch src / index.js --exec \“ node -r dotenv / config -r babel-register \”“

有关documentation的更多信息,请查看监视多个目录部分。