Nodemon在Docker环境中不起作用

我正在用无花果来构buildNodeJS dev-env。

当我使用nodemon来监视server.js时,更改server.js将不会重新启动服务器。

CMD ["nodemon", "/nodeapp/server.js"] 

但是,当我从节点更改为主pipe,然后它的工作!

 CMD ["supervisor", "/nodeapp/server.js"] 

有谁知道问题在哪里?

更多信息如下:


我的无花果文件夹结构

 app/server.js package.json node_modules/ fig.yml Dockerfile 

fig.yml:

 nodejs: build: . ports: - "8080:8080" 

Dockerfile:

 RUN apt-get update --fix-missing RUN rm /bin/sh && ln -s /bin/bash /bin/sh # NVM RUN curl -sL https://deb.nodesource.com/setup | sudo bash - && \ apt-get install -y nodejs VOLUME ./app:/nodeapp WORKDIR /nodeapp RUN rm /bin/sh && ln -s /bin/bash /bin/sh && \ npm install -g nodemon mocha supervisor CMD ["nodemon", "/nodeapp/server.js"] 

Server.js :(来自NodeJS网站的示例代码)

 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello 12\n'); }).listen(8080); console.log('Server running at http://127.0.0.1:8080/'); 

首先 – VOLUME ./app:/nodeapp没有做你想做的 – 你在映像中创build一个名为/app:/nodeapp的目录,所以server.js文件在任何时候都不会进入你的映像。

使用docker run --rm -it yourimagename ls -latestingdocker run --rm -it yourimagename ls -la

改变你的Dockerfile

 FROM ubuntu RUN apt-get update --fix-missing RUN apt-get install -yq curl RUN rm /bin/sh && ln -s /bin/bash /bin/sh # NVM RUN curl -sL https://deb.nodesource.com/setup | sudo bash - && \ apt-get install -y nodejs #VOLUME ./app:/nodeapp ADD app /nodeapp WORKDIR /nodeapp RUN rm /bin/sh && ln -s /bin/bash /bin/sh && \ npm install -g nodemon mocha supervisor CMD ["nodemon", "/nodeapp/server.js"] 

让我:

 mini:nodaemon sven$ docker run --rm -it -p 8080:8080 nodaemon 2 Dec 02:27:52 - [nodemon] v1.2.1 2 Dec 02:27:52 - [nodemon] to restart at any time, enter `rs` 2 Dec 02:27:52 - [nodemon] watching: *.* 2 Dec 02:27:52 - [nodemon] starting `node /nodeapp/server.js` Server running at http://127.0.0.1:8080/ 

这是我如何做到的:

你需要nodemon 1.3.0-5版本( npm i -g nodemon@dev

.dockerignore:

 node_modules/* 

Dockerfile:

 FROM node:0.10 WORKDIR /nodeapp ADD ./package.json /nodeapp/package.json RUN npm install --production ADD ./app /nodeapp/app EXPOSE 8080 CMD ["node", ".", "--production"] 

的package.json:

 { "name": "fig-nodemon", "version": "1.0.0", "description": "", "main": "./app/server.js", "scripts": { "nodemon": "fig up -d && fig run nodejs npm i --development && nodemon -x \"fig kill nodejs && fig build nodejs && fig start nodejs && fig logs nodejs\"" }, "author": "", "license": "MIT" } 

fig.yml:

 nodejs: build: . command: node . --development volumes: - ./app:/nodeapp/app ports: - "8080:8080" 

应用程序/ server.js:

 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello 13\n'); }).listen(8080); console.log('Server running at http://127.0.0.1:8080/'); 

然后我运行npm run nodemon开始。

Interesting Posts