Nodemon no funciona en el entorno Docker
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/');
Aceptado
Hay una opción especial para habilitar el modo de observación heredado de nodemon:
nodemon --legacy-watch
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 nodemon
para empezar.