如何在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/gulp
在node_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