微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – Nodemon在Docker环境中不起作用

我正在使用Docker和fig来构建NodeJS dev-env.

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

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

但是当我从nodemon变为主管时,它就起作用了!

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不能做你想要的 – 你在图像中创建了一个名为/ app:/ nodeapp的目录 – 所以在任何时候都没有server.js文件进入你的图像.

使用docker 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/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐