не могу собрать образ докера

Я пытался создать образ Docker, используя этот Dockerfile:

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: not found
Команда '/bin/sh -c cd src && npm install' вернула ненулевой код: 127

Есть идеи, как я могу это решить?


person techrider    schedule 19.04.2017    source источник


Ответы (2)



Вы видите это сообщение об ошибке, потому что когда вы пытались запустить npm install, нет доступной копии npm.

Вы используете alpine в качестве базового изображения.

По умолчанию alpine представляет собой небольшой образ, поэтому внутри него содержится ограниченный набор программ по умолчанию. Какие программы есть в образе alpine? Немного.

Поэтому, если вы пытаетесь запустить образ alpine с помощью Nodejs, вам нужно выполнить дополнительную работу.

Для ее решения у вас есть два варианта:

  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, cat, ls и так далее.

person Daniel    schedule 15.12.2018