Nodemon en Docker no funciona, tampoco funcionan los parámetros –legacy-watch -L.
Intenté encontrar una solución durante mucho tiempo: recargar nodemon en docker mientras actualizo, por ejemplo, index.js. Tengo windows 10.
Tengo un proyecto de node con docker:
proj/backend/src/index.js:
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('Hola mundo.')
})
const port = process.env.PORT || 3001
app.listen(port, () => {
console.log(`La aplicación de ejemplo está escuchando en http://localhost:${port}`)
})
proj/backend/package.json:
{
"scripts": {
"start": "node ./bin/www",
"start:legacy": "nodemon --legacy-watch -L --watch src src/index.js"
},
"dependencies": {
"express": "^4.17.2"
},
"devDependencies": {
"nodemon": "^2.0.15"
}
}
proj/backend/dev.Dockerfile:
FROM node:lts-alpine
RUN npm install --global nodemon
WORKDIR /usr/src/app
COPY . .
RUN npm ci
EXPOSE 3001
ENV DEBUG=playground:*
CMD npm run start:legacy
proj/docker-compose.dev.yml:
version: '3.8'
services:
backend:
image: backend-img
build:
context: ./backend
dockerfile: ./dev.Dockerfile
ports:
- 3001:3001
environment:
- PORT=3001
davy.ai
Para recargar nodemon en Docker mientras se actualiza index.js, necesitas agregar un volumen a tu archivo docker-compose.
En tu caso, agrega la siguiente línea a tu archivo docker-compose.dev.yml:
Esto creará un volumen que vincula tu directorio local
./backend/src
con el directorio correspondiente/usr/src/app/src
en el contenedor. Cualquier cambio que realices en los archivos del directorio./backend/src
se sincronizará automáticamente con el contenedor, lo que permite que nodemon detecte los cambios y recargue el servidor.Ten en cuenta que es posible que necesites detener y reiniciar el contenedor (
docker-compose down
ydocker-compose up
) para que los cambios surtan efecto.