如何使用 docker-compose 在 docker 上安装 gulp
How to install gulp on a docker with docker-compose
我正在使用 docker compose,这是我的 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
在 WORKDIR /app
之后,以便 gulp 本地安装在 node_modules/gulp
.但是你已经这样做了并且有同样的错误。这是因为在您的 docker-compose-dev.yml
、 中,您将主机目录作为 /app
卷安装在 docker 容器 中。因此,当您 运行 连接容器时,/app 目录中的本地更改会丢失。
您可以从主机中的 docker-compose-dev.yml
或 运行 npm install gulp
中删除卷。
您可以创建startup.sh
npm install bower gulp
bower install --allow-root
(或者当容器启动时你需要 运行 的任何东西)然后你的 Dockerfile 应该执行 startup.sh
...
CMD ["/startup.sh"]
启动脚本将在 docker-compose 安装目录后执行。
我还建议在 docker-compose.yml:
中声明的临时文件系统中挂载 node_modules
volumes:
- .:/app
- /app/node_modules
我正在使用 docker compose,这是我的 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
在 WORKDIR /app
之后,以便 gulp 本地安装在 node_modules/gulp
.但是你已经这样做了并且有同样的错误。这是因为在您的 docker-compose-dev.yml
、 中,您将主机目录作为 /app
卷安装在 docker 容器 中。因此,当您 运行 连接容器时,/app 目录中的本地更改会丢失。
您可以从主机中的 docker-compose-dev.yml
或 运行 npm install gulp
中删除卷。
您可以创建startup.sh
npm install bower gulp
bower install --allow-root
(或者当容器启动时你需要 运行 的任何东西)然后你的 Dockerfile 应该执行 startup.sh
...
CMD ["/startup.sh"]
启动脚本将在 docker-compose 安装目录后执行。
我还建议在 docker-compose.yml:
中声明的临时文件系统中挂载 node_modulesvolumes:
- .:/app
- /app/node_modules