我正在学习docker和nodejs,我想用这两个工具开始一个项目。
我想要实现的是在docker的构建阶段安装节点依赖,然后通过docker-compose卷将node_modules文件夹复制到我的主机。
这是我的Dockerfile:FROM node:latest
COPY . /myproject/back/
WORKDIR /myproject/back/
RUN npm install --save-dev nodemon
RUN npm install --save
express
multer
CMD npm run dev
这是我的docker- composition。yml:
version: "3.3"
services:
back:
build: ./back
expose:
- 3000
ports:
- "3000:3000"
volumes:
- ./back:/myproject/back
当我运行docker-compose build
时,它正确构建,但当我运行docker-compose up
时,我得到这个错误:
back_1 | > back@1.0.0 dev
back_1 | > nodemon main.js
back_1 |
back_1 | sh: 1: nodemon: not found
back_1 | npm ERR! code 127
我错过了什么?这是推荐的方法吗?
理想情况下,应该只在您的开发环境中使用Nodemon。你可以配置你的dockercontainer在错误发生时重新启动,放弃容器内Nodemon的需要。
现在,如果你真的想让Nodemon在docker中运行你的node应用程序,那么你需要首先全局安装Nodemon:
用这个RUN npm install -g nodemon
替换这个RUN npm install --save-dev nodemon
,这将使命令nodemon
在您的容器中可用。