2017-06-06 102 views
0

当我尝试运行“码头构建”时。或 '泊坞窗构建 - < Dockerfile',错误出现如下:码头文件中的码头构建错误

[[email protected]_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<[email protected]> ---> 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 <[email protected]> 
WORKDIR /opt/app 
COPY . ./ 
RUN npm install 
COPY dist/ /opt/app/ 
CMD node ./index.js < test.json 

任何人都可以有着相似的经历,给我一个解决方案。非常感激!

+0

该码头图像可能没有nodejs – MinusFour

+0

您需要在机器中安装NPM。 – Baruch

+0

当我执行npm -v和node -v时,我可以在centos操作系统中看到版本信息。看起来docker映像中没有npm,但是我应该怎么做 –

回答

0

尝试基本图像改变为one containing node,如:

FROM node:6 
MAINTAINER Ke Peng <[email protected]> 
WORKDIR /opt/app 
COPY . ./ 
RUN npm install 
COPY dist/ /opt/app/ 
CMD node ./index.js < test.json 

注意:仅更改第一行。

+0

这对我很好 –

0

尝试此Dockerfile

FROM ubuntu:14.04 
MAINTAINER Ke Peng <[email protected]> 
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 

编辑成在意见提出

+0

不,不工作,infors像:103新安装,0删除和1未升级。 需要获得49.8 MB的档案。 完成此操作后,将使用155 MB的额外磁盘空间。 你想继续吗? [Y/n]中止。 命令'/ bin/sh -c sudo apt-get install npm'返回一个非零代码:1 –

+1

您需要传递'-y'标志,以便在没有用户输入的情况下自动安装软件包。另外,将安装命令组合在一起是一个好主意,因此它不会创建不必要的图层。 –

+0

是的,通过在apt-get install nodejs中加入-y,可以安装相关的环境。谢谢 –

0

尝试这种情况:

FROM ubuntu:14.04 
MAINTAINER Ke Peng <[email protected]> 
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 
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 <[email protected]> 
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 

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

这将帮助图像形成使用最小的图层,这将减少图像的整体大小。

希望这会有所帮助。