Usar docker y docker-componer para ejecutar npm install y bower install

Estoy tratando de usar Docker con una image de nodo para ejecutar npm install y npm install bower install .

Aquí está la parte relevante de mi 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" 

Lamentablemente, recibo el siguiente error del nodo:

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

Indicando que el command no fue interpretado apropiadamente.

También intenté usar un script posterior en mi package.json de la siguiente manera:

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

Aquí está mi .bowerrc :

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

Sin la installation de npm install , la npm install se ejecuta npm install . Es realmente la bower install que no puedo ponerme a trabajar.

Alguien puede ayudarme porfavor?

editar : la secuencia de commands postinstallation anterior me da este error desde el nodo:

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

edición 2 : probé la solución sugerida por Alexis, es decir, usando una image existente, pero traté de especificar un bower.json local, etc. de la siguiente manera:

 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 

Me sale este error sin embargo:

 /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) 

No estoy seguro de por qué lo consigo y cómo solucionarlo.

Creo que deberías instalar bower globalmente en tu image

Crea este Dockerfile :

 FROM node:0.10.40 RUN npm install -g bower 

Y referencerlo en el file docker-compose.yml

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

De lo contrario, hay una image popular en dockerhub digitallyseamless / nodejs-bower-grunt que ya lo proporciona.