使用docker和docker-compose来运行npm install和bower install

我正在尝试使用docker和节点映像来运行npm installbower install

这里是我docker-compose.yml的相关部分:

 node: image: node:0.10.40 volumes: - ./package.json:/package.json - .bowerrc:/.bowerrc - ./bower.json:/bower.json - ./build/npm.tmp/node_modules:/node_modules - ./build/npm.tmp/bignibou-client/src/bower_components:/bignibou-client/src/bower_components command: bash -c "npm install && bower install" ports: - "8888:8888" 

不幸的是我从节点得到以下错误:

 node_1 | bash: bower: command not found bignibousite_node_1 exited with code 127 

指示命令没有正确解释。

我也尝试在我的package.json中使用post-script,如下所示:

  "scripts": { "postinstall": "/node_modules/bower/bin/bower install" } 

这是我的.bowerrc

 { "json": "bower.json", "directory": "bignibou-client/src/bower_components" } 

没有凉亭安装, npm install运行正常。 这是真正的bower install ,我不能去工作。

任何人都可以请帮忙?

编辑 :上面的postinstall脚本给了我这个节点的错误:

 node_1 | npm WARN cannot run in wd bignibou-client@0.1.0 /node_modules/bower/bin/bower install (wd=/) 

编辑2 :我试过Alexisbuild议的解决scheme,即使用现有的图像,但我试图指定一个本地bower.json,如下所示:

 docker run -it --rm \ -v ./package.json:/package.json \ -v .bowerrc:/.bowerrc \ -v ./bower.json:/bower.json \ -v ./build/npm.tmp/node_modules:/node_modules \ -v ./build/npm.tmp/bignibou-client/src/bower_components:/bignibou-client/src/bower_components \ digitallyseamless/nodejs-bower-grunt bower install 

我得到这个错误:

 /usr/local/lib/node_modules/bower/node_modules/bower-config/node_modules/graceful-fs/polyfills.js:224 throw er ^ Error: EISDIR, illegal operation on a directory at Error (native) at Object.fs.readSync (fs.js:552:19) at Object.fs.readSync (/usr/local/lib/node_modules/bower/node_modules/bower-config/node_modules/graceful-fs/polyfills.js:218:23) at Object.fs.readFileSync (fs.js:384:28) at /usr/local/lib/node_modules/bower/node_modules/bower-config/lib/util/rc.js:75:27 at Array.forEach (native) at json (/usr/local/lib/node_modules/bower/node_modules/bower-config/lib/util/rc.js:74:14) at rc (/usr/local/lib/node_modules/bower/node_modules/bower-config/lib/util/rc.js:31:9) at Config.load (/usr/local/lib/node_modules/bower/node_modules/bower-config/lib/Config.js:14:20) at Function.Config.read (/usr/local/lib/node_modules/bower/node_modules/bower-config/lib/Config.js:49:19) 

我不知道为什么我得到这个,以及如何解决这个问题。

我想你应该在你的形象全球安装凉亭

创build这个Dockerfile

 FROM node:0.10.40 RUN npm install -g bower 

并在docker-compose.yml文件中引用它

 node: build: . // <= Path to the folder containing the Dockerfile ... 

否则,dockerhub 数字无线/ nodejs-bower-grunt上已经有了一个stream行的图像,它已经提供了它。