我一直在尝试使用这个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
知道如何解决这个问题吗?
答案 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
图像,则需要做其他工作。
要解决此问题,您有两种选择:
查找其他基础图像。 -您可以尝试查找其中已经包含Node和NPM的基本映像。
使用一些其他命令运行alpine
,尝试在其中安装npm
。
使用别人的作品或从头开始构建它。
我建议在其中找到预先配置了npm
的图像。您可以导航到DockerHub,这是一个图像存储库。
DockerHub中有一个官方的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
等。