如何从 dockerfile 运行 gulp 任务

Rah*_*hul 2 docker gulp dockerfile

我正在尝试从我的 Dockerfile 运行 gulp 任务。这是我的 Dockerfile

#
# Node.js w/ Bower & Grunt Dockerfile
#
# https://github.com/digitallyseamless/docker-nodejs-bower-grunt
#

# Pull base image.
FROM library/node:4
MAINTAINER Digitally Seamless <docker@digitallyseamless.com>

# Install Bower & Grunt
RUN npm install -g bower grunt-cli && \
    echo '{ "allow_root": true }' > /root/.bowerrc

RUN npm install gulp -y
RUN gulp ng-config --env development

# Define working directory.
WORKDIR /data
COPY . /data


# Define default command.
EXPOSE 7000 
CMD ["bash"]
Run Code Online (Sandbox Code Playgroud)

请注意,在上面的 Dockerfile 中,我正在尝试安装 gulp 并运行 gulp 任务,如下所示:

RUN npm install gulp -y
RUN gulp ng-config --env development
Run Code Online (Sandbox Code Playgroud)

其中 ng-config 是我在 gulpfile.js 文件中定义的 gulp 任务。

当我尝试使用上述 Dockerfile 内容构建映像时,我收到类似gulp: not found 的错误

我不确定 gulp 是否未正确安装或为什么它无法识别 gulp 命令。你们能帮忙吗?

编辑:

如果我尝试全局安装 gulp,我的构建会失败并显示以下输出。

Sending build context to Docker daemon  7.893MB
Step 1/9 : FROM library/node:4
 ---> 3fb5ca8fcd8e
Step 2/9 : MAINTAINER Digitally Seamless <docker@digitallyseamless.com>
 ---> Using cache
 ---> 242154cec3ce
Step 3/9 : RUN npm install -g bower grunt-cli &&     echo '{ "allow_root": true }' > /root/.bowerrc
 ---> Using cache
 ---> b73fc7831a4a
Step 4/9 : RUN npm install -g gulp -y
 ---> Using cache
 ---> b498e61bfb8e
Step 5/9 : RUN gulp ng-config --env development
 ---> Running in 38d2e7f208cc
[08:21:29] Local gulp not found in /
[08:21:29] Try running: npm install gulp
The command '/bin/sh -c gulp ng-config --env development' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

Moe*_*ema 7

您必须在全局本地安装 gulp:

RUN npm install -g gulp
RUN npm install gulp
Run Code Online (Sandbox Code Playgroud)

请参阅这篇文章以了解有关原因的讨论。