如何使用 docker-compose 在 docker 上安装 gulp

问题描述 投票:0回答:3

我正在使用 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**

我尝试在

RUN npm install gulp
之前和之后添加行
WORKDIR /app
以将其安装在本地,但我收到相同的错误

帮助

docker gulp boot2docker dockerfile docker-compose
3个回答
10
投票

您需要在npm install gulp

之后
运行
WORKDIR /app
,以便在
node_modules/gulp
中本地安装gulp。但你已经这样做了并且犯了同样的错误。这是因为在您的
docker-compose-dev.yml
中,您正在将主机目录安装为 docker 容器中的
/app
。因此,当您运行容器时, /app 目录中的本地更改将会丢失。

您可以从

docker-compose-dev.yml
中删除卷或在主机中运行
npm install gulp


0
投票

您可以创建

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

0
投票

致未来的谷歌用户:

检查生产环境是否没有Node镜像。这是行不通的,你会讨厌生活。

为了让 gulp 工作,你应该像这样设置开发环境:

FROM node:latest AS build

ENV NODE_ENV=development
© www.soinside.com 2019 - 2024. All rights reserved.