
Henry Daniel Campoverde Borja
PreguntaEstimados, al momento de correr:
docker run --rm -p 3000:3000 -v /Users/MacbookAir/Documents/DockerTest/docker-master:/usr/src platziapp
Me da un error:
Error: Cannot find module '/root/.npm/_npx/1/lib/node_modules/nodemon/bin/postinstall' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15) at Function.Module._load (internal/modules/cjs/loader.js:507:25) at Function.Module.runMain (internal/modules/cjs/loader.js:742:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3) [nodemon] 1.18.9 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `node index.js` internal/modules/cjs/loader.js:583 throw err; ^
Pienso que es por lo que se montó con el -v, pero no sé como solucionarlo
Por fa si alguien me da una mano!
Saludos
- Cree una carpeta llamada y moví el archivo
app
a la carpeta appindex.js
- Posteriormente cambie la ruta de ejecución de a
index.js
dentro del dockerfileapp/index.js

Victor Arciles
Yo resolvi el mismo problema (en OSX) unicamente haciendo despues de clonar el repositorio de github
npm install
Puedes hacerlo antes o despues de construir la imagen, pero yo considero que lo correctos es hacerlo antes de construir la imagen ya que la carpeta node_modules no existe, este directorio es donde se guardan todos los módulos que usa el proyecto entre los cuales esta express que es el que nos da el error.
Luego puedes correr el contenedor y debería funcionar.

Gabriel Alejandro Terán Guerrero
Como dice jogs el problema no esta en el container, el problema esta en como se crea el volumen. Cuando se crea un bind mount o un volumen mount si hay algo en estos (ya sea archivos o carpetas), sobreescribiran su contenido en el contenedor, por lo que si en tu computadora host no tienes el node_modules, este no se sobreescribira en el contenedor y por lo tanto no funcionara la aplicación.De igual forma este problema puede ser resolvido con Docker-Compose y es mencionado en las siguientes clases

Jorge Nicolas Salinas Galindo
Adicione en el dockerfile:
RUN npm install -g npx RUN npm install -g nodemon
Y ya no sale el error, pero ahora me sale el siguiente error:
$ docker run --rm -p 3000:3000 -v c:\users\usuario\source\repos\docker\docker:/usr/src platziapp
Usage: nodemon [nodemon options] [script.js] [args] See "nodemon --help" for more.
cambie la versión de nodemon por la ultimo y por varias versiones entre la versión del ejemplo del repositorio y la ultima y aun así persiste el error. espero que me puedan colaborar muchas gracias

Joaquin García Santiago
Si entiendo correctamente el error esta en hacer -v al montar una carpeta del sistema anfitrión en el contenedor, estamos sobre escribiendo lo que se instalo en el dockerfile con
npm install
En resumen si no tienes la carpeta node_modules al hacer
docker run
lo que hice fue lo siguiente:
Así quedo el archivo
FROM node:10.15.3-alpine COPY ["package.json", "package-lock.json", "/usr/src/"] WORKDIR /usr/src RUN npm install COPY [".", "/usr/src/"] EXPOSE 3000 CMD ["npx", "nodemon", "app/index.js"]

Gustavo Adolfo Ramírez Apache
como puedo solucionar ese error ya hice todo loq ue pusieron aca y nada funciona

Pedro Roberto Capriles Morales
Amigo también me dio ese error y lo resolví descargando las dependencias de npx en el dockerfile antes del CMD
RUN npm install -g npx
y también
RUN npm install -g nodemon
este comando con las dependencias de nodemon de forma global
Espero te sirva saludos.

Henry Daniel Campoverde Borja
@yajairo87 No creo que sea problema de la dependencia, porque si quito que se monte el volumen, funciona correctamente

Oscar Vesga
Estoy en windows usando docker toolbox, y el comando corre bien si no uso el volumen de la carpeta local, pero al colocarle el comando
-v pathLocal:/usr/src

Oscar Vesga
Se supone que el comando
npm install

Jair Israel Avilés Eusebio
Verifica que tu dependencia de nodemon este correctamente definida en el archivo package.json, al parecer no esta consiguiendo resolverla cuando ejecuta se ejecuta el comando
npm install