如何在docker-compose的docker上安装gulp

我正在使用docker撰写,这是我的yaml文件

web: dockerfile: Dockerfile-dev build: . command: gulp volumes: - .:/app ports: - '9001:9001' 

这里是我的docker文件

 FROM node:0.12.7 RUN npm install -g bower gulp ADD . /app WORKDIR /app RUN bower install --allow-root 

然后我跑

 docker-compose -f docker-compose-dev.yml build docker-compose -f docker-compose-dev.yml up 

但是我得到以下错误

 Recreating web_web_1... Attaching to web_web_1 web_1 | [07:39:08] Local gulp not found in /app web_1 | [07:39:08] Try running: npm install gulp web_web_1 exited with code 1 Gracefully stopping... (press Ctrl+C again to force)**strong text** 

我已经尝试在WORKDIR /app之前和之后添加行RUN npm install gulp以获得它在本地安装,但我得到相同的错误

帮帮我

您需要运行npm install gulp AFTER WORKDIR /app ,以便node_modules/gulpnode_modules/gulp本地安装。 但是你已经这样做了,并有相同的错误。 这是因为在您docker-compose-dev.yml您将主机目录挂载 docker-compose-dev.yml 容器内的/app 。 因此,在运行容器时,/ app目录中的本地更改会丢失。

您可以从docker-compose-dev.yml删除卷,或者在主机中运行npm install gulp docker-compose-dev.yml

你可以创buildstartup.sh

 npm install bower gulp bower install --allow-root 

(或任何你需要在容器触发时运行的),那么你的Dockerfile应该执行startup.sh

 ... CMD ["/startup.sh"] 

启动脚本将在Docker-compose挂载目录后执行。

我也build议将node_modules装入docker-compose.yml中声明的临时文件系统中:

 volumes: - .:/app - /app/node_modules