Docker不能识别npm install命令并抛出错误

我的Dockerfile如下所示:

From ubuntu:14.04 WORKDIR /app #COPY package.json /app/package.json COPY . /app RUN npm install EXPOSE 3000 CMD ["npm","start"] 

现在,当我运行命令sudo docker -t my-app . 。 它给了我以下错误:

发送构build上下文到Docker守护进程453.6 kB将构build上下文发送到Docker守护进程步骤0:FROM ubuntu:14.04 —> 37a9c4a8276c步骤1:WORKDIR / app —>使用caching—> a83d4ef27948步骤2:COPY。 / app —> 1029f5d7d8a3删除中间容器eb9e7ea7f7e6步骤3:运行npm install —>在5d4f2c05d2d8 / bin / sh中运行:1:npm:not found INFO [/ bin / sh -c npm install ]返回了一个非零的代码:127

我的Dockerfile中有什么遗漏吗?

这是预料之中的。 您的映像没有安装节点,因为基本映像是Ubuntu的。 您应该使用节点图像作为基础图像。

 From node WORKDIR /app #COPY package.json /app/package.json COPY . /app RUN npm install EXPOSE 3000 CMD ["npm","start"] 

你的Dockerfile是FROM ubuntu:14.04构build的,所以如果你想在你的容器中使用npm / node,你需要通过添加RUN命令来安装节点,按照ubuntu的安装说明安装节点。

而不是这个,你可能只想使用官方的节点镜像:

https://hub.docker.com/_/node/

FROM node

或者使用特定的版本/发行版

FROM node:8.4.0-wheezy

(其他标签/版本/发行版在Docker Hub页面上列出)