2016-07-27 37 views
0

我正在容纳一个nodejs应用程序。我Dockerfile看起来是这样的:为什么我的npm dockerfile循环?

FROM node:4-onbuild 

ADD ./ /egp 

RUN cd /egp \ 
    && apt-get update \ 
    && apt-get install -y r-base python-dev python-matplotlib python-pil python-pip \ 
    && ./init.R \ 
    && pip install wordcloud \ 
    && echo "ABOUT TO do NPM" \ 
    && npm install -g bower gulp \ 
    && echo "JUST FINISHED ALL INSTALLATION" 

EXPOSE 5000 
# CMD npm start > app.log 
CMD ["npm", "start", ">", "app.log"] 

当我不使用的Dockerfile,而是运行

docker run -it -p 5000:5000 -v $(pwd):/egp node:4-onbuild /bin/bash 

我可以再贴上RUN命令的价值,这一切完美的作品,然后执行npm start命令,我很好走。然而,试图改为docker build .它似乎运行到试图安装npm东西(并且从不显示我的回显命令)的无尽循环,直到它崩溃与内存不足的错误。我哪里错了?

编辑

这里是指具有相同的容器中的EGP文件夹中的最低版本:登录和粘贴整个“运行”命令的作品,但搬运工构建确实no​​t.It是的.tar。 GZ文件(尽管名称可能无需下载的一个。)

http://orys.us/egpbroken

+0

您是否有可用于重新创建问题的egp文件夹的最小版本? – BMitch

+0

添加了上下文的最小版本 –

回答

1

节点:4 onbuild图像包含following Dockerfile

FROM node:4.4.7 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

ONBUILD COPY package.json /usr/src/app/ 
ONBUILD RUN npm install 
ONBUILD COPY . /usr/src/app 

CMD [ "npm", "start" ] 

这三个ONBUILD命令在您的ADD或RUN命令启动之前运行,且无限循环似乎来自正在运行的npm install命令。当您直接启动容器时,由于您没有构建子图像,因此会跳过ONBUILD命令。将您的FROM行更改为:

FROM node:4 

并且您应该获得预期结果。