Nodemon no funciona en el entorno Docker

Resuelto kerkerj asked hace 9 años • 6 respuestas

Estoy usando Docker con fig para construir NodeJS dev-env.

Mientras uso nodemon para ver server.js, cambiar server.js no reiniciará el servidor.

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

Pero mientras cambié de nodemon a supervisor, ¡funcionó!

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

¿Alguien sabe dónde está el problema?

Más información está a continuación:


Mi estructura de carpetas de higos:

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

figura.yml:

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

Archivo Docker:

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: (código de muestra del sitio web de 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/');
kerkerj avatar Dec 01 '14 17:12 kerkerj
Aceptado

Hay una opción especial para habilitar el modo de observación heredado de nodemon:

nodemon --legacy-watch
haiflive avatar Dec 14 '2018 08:12 haiflive

Así es como lo hago:

Necesitará la versión 1.3.0-5 de Nodemon para esto ( npm i -g nodemon@dev)

.dockerignore:

node_modules/*

Archivo Docker:

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

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

figura.yml:

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

aplicación/servidor.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/');

Luego corro npm run nodemonpara empezar.

Jan avatar Dec 09 '2014 20:12 Jan