无法建立码头图像

时间:2017-04-19 13:37:00

标签: node.js docker devops alpine

我一直在尝试使用这个Dockerfile构建Docker镜像:

FROM mhart/alpine-node:base-6

MAINTAINER techhadmin

COPY ./package.json src/

RUN cd src && npm install 

COPY . /src 

WORKDIR /src

EXPOSE 3000
CMD ["npm", "start"]

但是我收到了这个错误:

  

/ bin / sh:npm:未找到
  命令' / bin / sh -c cd src&& npm install'返回非零代码:127

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

阅读文档:

https://hub.docker.com/r/mhart/alpine-node/

写道:

  

#如果您需要npm,请不要使用基本标签

     

#RUN npm install

因此,请勿使用base-6代码并将FROM图片更改为7

FROM mhart/alpine-node:7

答案 1 :(得分:0)

您看到此错误消息是因为当您尝试运行npm install时,没有npm的副本。

您使用alpine作为基本图像。

默认情况下,alpine是一个小图像,因此其中包含有限的默认程序集。 alpine映像中有哪些程序?不多。

因此,如果您尝试使用Nodejs运行alpine图像,则需要做其他工作。

要解决此问题,您有两种选择:

  1. 查找其他基础图像。 -您可以尝试查找其中已经包含Node和NPM的基本映像。

  2. 使用一些其他命令运行alpine,尝试在其中安装npm

使用别人的作品或从头开始构建它。

我建议在其中找到预先配置了npm的图像。您可以导航到DockerHub,这是一个图像存储库。

DockerHub中有一个官方的Node存储库。

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

因此您可以执行以下操作:

# Specify base image
FROM node:alpine

# Install some dependencies
RUN npm install

# Setup default command
CMD ["npm", "start"]

关于node:alpine的好处是,您将不会获得任何其他不必要的软件包,而只是获得了Nodejs的绝对精简版本,而除了ping命令{{ 1}},cat等。