Dockerfile中的docker build错误

时间:2017-06-06 02:55:39

标签: node.js docker

当我尝试运行'docker build'时。或'docker build - < Dockerfile',错误如下所示:

[root@VM_60_90_centos dtask-ctrip-train-domestic]# docker build .
Sending build context to Docker daemon 38.98 MB 
Step 1 : FROM ubuntu:14.04  ---> 132b7427a3b4 
Step 2 : MAINTAINER Ke Peng<ke.peng@jingli365.com>  ---> Using cache  ---> 
         db9529465f77 
Step 3: WORKDIR /opt/app  ---> Using cache  ---> 3122f40a8e56 
Step 4 :COPY . ./  ---> 4d67a5fbf128 Removing intermediate container
c2d83602f613 
Step 5 : RUN npm  install  ---> Running in 67680232cbdf

/bin/sh: 1: npm: not found The command '/bin/sh -c npm  install'
returned a non-zero code: 127

和我的Dockerfile如下:

FROM ubuntu:14.04 
MAINTAINER Ke Peng <ke.peng@jingli365.com> 
WORKDIR /opt/app 
COPY . ./ 
RUN npm  install 
COPY dist/ /opt/app/ 
CMD node ./index.js < test.json

任何人都可以有类似的经历并给我一个解决方案。非常感谢!

4 个答案:

答案 0 :(得分:0)

试试这个Dockerfile

FROM ubuntu:14.04 
MAINTAINER Ke Peng <ke.peng@jingli365.com> 
RUN sudo apt-get update
RUN sudo -y apt-get install nodejs
RUN sudo -y apt-get install npm
WORKDIR /opt/app 
COPY . ./ 
RUN npm  install 
COPY dist/ /opt/app/ 
CMD node ./index.js < test.json

按照评论中的建议编辑

答案 1 :(得分:0)

试试这个:

FROM ubuntu:14.04 
MAINTAINER Ke Peng <ke.peng@jingli365.com> 
RUN sudo apt-get update && \
    sudo apt-get install -y nodejs npm

WORKDIR /opt/app 

COPY . ./ 
RUN npm  install 
COPY dist/ /opt/app/ 
CMD node ./index.js < test.json

答案 2 :(得分:0)

尝试将基本图片更改为one containing node,例如:

FROM node:6
MAINTAINER Ke Peng <ke.peng@jingli365.com> 
WORKDIR /opt/app 
COPY . ./ 
RUN npm  install 
COPY dist/ /opt/app/ 
CMD node ./index.js < test.json

注意:仅更改了第一行。

答案 3 :(得分:0)

我想从此修改

RUN sudo apt-get update
RUN sudo -y apt-get install nodejs
RUN sudo -y apt-get install npm

到此:

RUN sudo apt-get update && apt-get install -y nodejs npm

整体看起来像这样:

FROM ubuntu:14.04 
MAINTAINER Ke Peng <ke.peng@jingli365.com> 
RUN sudo apt-get update && apt-get install -y nodejs npm
WORKDIR /opt/app 
COPY . ./ 
RUN npm  install 
COPY dist/ /opt/app/ 
CMD node ./index.js < test.json

作为Dockerfiles的best practice您需要在单个图层中构建/安装软件包。

这将有助于使用最小的图层形成图像,这将减少图像的整体尺寸。

希望这有帮助。