es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  ,

Answer

  1. Avatar for 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:

    services:
      backend:
        ...
        volumes:
          - ./backend/src:/usr/src/app/src
    

    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 y docker-compose up) para que los cambios surtan efecto.

Comments are closed.