开发环境NodeJS和Docker

我创build了下面的Dockerfile

ROM node:argon # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies COPY package.json /usr/src/app/ RUN npm install # Bundle app source COPY . /usr/src/app EXPOSE 8080 CMD [ "npm", "start" ] 

当我构build和运行Docker镜像时,一切正常

但是,当我跑步

 docker run -p 8080:8080 -v ~/projects/NodeJSExample/:/usr/src/app/ nodeexample 

我有 :

 Error: Cannot find module 'express' at Function.Module._resolveFilename (module.js:325:15) at Function.Module._load (module.js:276:25) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.<anonymous> (/usr/src/app/server.js:3:17) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10) 

我如何configurationDockerfile来dynamic支持代码更改?

您面临的问题是您在容器的/usr/src/app/文件夹中声明一个卷。 它所做的是将文件夹replace为文件系统中的文件夹,而文件系统肯定没有执行npm install命令。

就好像你的Dockerfile是有效的,你可以像这样分发它。 但是对于本地开发的目的,你不能在映像(Dockerfile)本身上运行npm install 。 所以你只需要在你的容器启动的时候在你的本地~/projects/NodeJSExample/上运行npm install命令,这样你就可以开始了。