Tengo un nodemon ejecutándose en un contenedor docker en desarrollo. He configurado con éxito la recarga en vivo cuando cambia el código.
Sin embargo, a veces escribo algún código donde nodemon falla. Nodemon se puede reiniciar manualmente cuando escribe 'rs' (cuando se ejecuta localmente).
El problema es que dentro de un contenedor docker no puedo hacer que se reinicie.
He intentado lo siguiente sin suerte:
docker exec -it add92j rs > rs no encontrado
docker exec -it add92j sh -c echo rs ====> solo echos rs
También probé docker attach y luego escribir rs pero no funciona.
También intenté usar el shell con docker exec -it sh , obteniendo el proceso con ps aux y luego:
echo rs > /proc/PID/fd/0
Pero eso tampoco funciona. (Tenga en cuenta que probé todas las variantes anteriores con rs y rs\n y usando printf y echo).
En el nodemon github veo que busca 'rs\n' para activar un reinicio y hay una referencia a SIGUSR2 . Por lo tanto, también intenté kill -12 PID pero eso solo mata mi proceso. Tenga en cuenta que verifiqué que 12 es SIGUSR2 en mi contenedor.
Los procesos que realmente se ejecutan en mi contenedor con ps aux son:
1 root 0:00 npm 14 root 0:00 sh -c DEBUG=app:* nodemon 15 root 0:00 node /workspace/node_modules/.bin/nodemon 29 root 0:00 sh -c node server/register.js 30 root 0:01 node server/register.jsEntonces mi pregunta es, ¿cómo envío texto a stdin para un proceso en Docker?
Ejecutar el contenedor de nodemon con -t tty y -i para stdin le permite controlar nodemon después de docker attach
→ CID=$(docker run -dti dply/node-docker-demo-app:nodemon) → docker attach $CID rs [nodemon] starting `node /app/index.js` Listening on 8080 ^Csigint