我正在尝试使用grunt和bower构建docker镜像,但是我遇到了以下异常。
2015/01/19 23:21:55命令[/bin/sh -c grunt]返回非零代码:1
bower也打印类似的异常。
我的Dockerfile如下。
问题可能在哪里?
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y node npm git git-core
RUN ln -s /usr/bin/nodejs /usr/bin/node
COPY . /app
WORKDIR /app
RUN npm install -g bower
RUN npm install -g grunt-cli
RUN npm install
# RUN bower install
RUN grunt
RUN grunt serve
EXPOSE 9000
顺便说一下,我并没有完全掌握docker的知识。我通过以下方式进入镜像:
docker run -t -i a87274a7f3b7 /bin/bash
并且仅仅运行
grunt
但什么都没有发生,它什么也不做,也没有给出任何错误信息。
编辑 这个似乎能正常工作。
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y nodejs npm git git-core
RUN ln -s /usr/bin/nodejs /usr/bin/node
COPY . /app
WORKDIR /app
RUN npm install -g bower
RUN npm install -g grunt-cli
RUN npm install
RUN bower install --allow-root
RUN grunt
RUN grunt serve
EXPOSE 9000
apt-get install --yes node
命令会安装ax25-node
,一个也被称为node
的业余无线电程序,它位于/usr/sbin/node
目录下。而npm
则会安装node.js
作为依赖项。建议省略node
或者明确指定nodejs
。 - Pauldocker run -it ubuntu:14.04
中运行了您的命令,但无法复制问题,可能是因为我没有您尝试设置的应用程序。即使 ax25-node 作为不需要的副作用安装在 /usr/sbin/node 中,apt-gets 和 npm 安装也可以正常工作。此后运行 grunt 或 bower 也可以正常工作,但由于没有设置要运行的命令,所以不会执行任何操作。 - Paul#!/usr/bin/env node
开头,因此它会被欺骗运行PATH中的任何node。如果那是无线电节点,而不是nodejs,它将无法工作。 - Paul