Tengo el siguiente archivo docker.
#Dockerfile FROM node:alpine WORKDIR /backend COPY package*.json . RUN yarn COPY . . EXPOSE 5000 CMD ["yarn", "dev"]Nodemon funciona según lo previsto en la máquina host, pero muestra el siguiente mensaje de error al ejecutar el contenedor.
yarn run v1.22.5 $ nodemon /bin/sh: nodemon: not found error Command failed with exit code 127. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. Nodemon no está instalado globalmente en la máquina host. Agregar RUN yarn add global nodemon en Dockerfile solo agrega una warning ../package.json: No license field en el error del contenedor.
Actualmente tengo el siguiente archivo package.json con las siguientes dependencias de desarrollo
# package.json ... "scripts": { "build": "tsc -p .", "start": "node ./dist/src/index.js", "dev": "nodemon", "test": "echo \"Error: no test specified\" && exit 1" }, "devDependencies": { "@types/express": "^4.17.11", "@types/node": "^14.14.34", "nodemon": "^2.0.7", "ts-node": "^9.1.1", "typescript": "^4.2.3" }, ...y nodemon.json como
{ "watch": [ "src" ], "ext": "ts,json", "ignore": [ "src/**/*.spec.ts" ], "exec": "yarn ts-node src/index.ts" }Prueba con abajo,
#Dockerfile FROM node:alpine WORKDIR /backend COPY package*.json . RUN yarn RUN yarn add global nodemon COPY . . EXPOSE 5000 CMD ["yarn", "dev"] NOTA AL MARGEN: Es mejor que no nodemon en producción. Sirva los archivos de compilación como en su secuencia de comandos de start . Debe agregar el comando de compilación antes de que comience el hilo.
#Dockerfile FROM node:alpine WORKDIR /backend COPY package*.json . RUN yarn COPY . . RUN yarn run build EXPOSE 5000 CMD ["yarn", "start"]