Ошибка Вам нужно запустить «nvm install default» при установке узла 8.15 на alpine: докер образа 3.9

Я хочу установить узел 8.15 на альпийском базовом образе докера: 3.9

Это мой dockerfile:

FROM alpine:3.9

ENV METEOR_VERSION=1.8.1
ENV METEOR_ALLOW_SUPERUSER true
ENV NODE_VERSION 8.15
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
ENV NVM_DIR /usr/local/nvm

RUN mkdir $NVM_DIR

# Install dependencies
RUN apk update
RUN apk upgrade
RUN apk add --no-cache bash
RUN apk --no-cache add curl

# Install NVM
RUN curl -o- "https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh" | bash

# Install NODE
RUN echo "source $NVM_DIR/nvm.sh && \
    nvm install $NODE_VERSION && \
    nvm alias default $NODE_VERSION && \
    nvm use default" | bash

# Install METEOR
RUN curl "https://install.meteor.com/?release=${METEOR_VERSION}" | /bin/

Но при попытке запустить его он не работает, появляется эта ошибка:

Вам необходимо запустить «nvm install default», чтобы установить его перед использованием.

1
задан 27.11.2019, 14:17
1 ответ

Я не уверен, нуждаешься ли ты специально в версии 8.15. Но принимая, что так был, первая проблема состоит в том, чтобы использовать alpine.

Говорит в документации nvm

Альпине Линукс, unlike mainstream/traditional Linux distributions, is based on BusyBox, в very compact (~5MB) Linux distribution. BusyBox (and thus Альпине Линукс) используй в different C/C ++ stack to most mainstream/traditional Linux distributions - musl.

This makes binary programs built for such mainstream/traditional несовместимый with Альпине Линукс, thus we cannot simply nvm install X on Альпине Линукс and expect the downloaded binary to run correctly - you'll likely see "... does not exist" errors if you try that.

, Сказанные это, у тебя есть какие-то альтернативы.

Сначала

, чтобы мочь скроллировать вещи в стиль curl <url> | bash, ты должен устанавливать несколько зависимостей.

Под RUN apk --no-cache add curl

 RUN apk add ca-certificates openssl ncurses coreutils \
            python2 make gcc g++ libgcc linux-headers \
            grep util-linux binutils findutils

, Если ты это делаешь, и потом ты скроллируешь что-то, как что ты имеешь:

RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash \
&& source  "$NVM_DIR/nvm.sh" \
&& nvm install  $NODE_VERSION \
&& nvm use --delete-prefix $NODE_VERSION \
&& nvm alias default $NODE_VERSION

Действительно устанавливает node 8.15.1..., но он потребует тебя:

env: ‘node’: No such file or directory

Секунда

, чтобы бороться с предыдущим, ты можешь использовать изображение alpine, которое уже приносит node 8 (но это 8.16.2 Третьи теперь)

FROM node:8-alpine3.9

...

, где ты устанавливаешь meteor, это не будет функционировать:

RUN curl "https://install.meteor.com/?release=${METEOR_VERSION}" | /bin/

Должен быть, взамен

RUN curl "https://install.meteor.com/?release=${METEOR_VERSION}" | bash

, Но направляя в предложение Вторые , если уже у тебя есть изображение с node 8.16, ты мог бы нарушать использование nvm и делать: Четвертые

FROM node:8-alpine3.9

# Install dependencies
RUN apk update
RUN apk upgrade
RUN apk add --no-cache bash curl
RUN apk add ca-certificates openssl ncurses coreutils \
                        python2 make gcc g++ libgcc linux-headers \
                        grep util-linux binutils findutils


ENV METEOR_VERSION=1.8.1
ENV METEOR_ALLOW_SUPERUSER true


# Install METEOR
RUN curl "https://install.meteor.com/?release=${METEOR_VERSION}" | bash

Сейчас, давайте думать, что, добавив все зависимости, чтобы мочь составлять meteor, расхлябанность Alpine теряется.

usando-alpine        latest          e977841adcbe    968MB
node                 8-alpine3.9     9c0651c52baf    66.9MB

, Если бы ты взамен использовал например, были должны buster в Вашей версии slim, ты уберегся бы такая зависимость:

FROM node:8-buster-slim

ENV METEOR_VERSION=1.8.1
ENV METEOR_ALLOW_SUPERUSER true

# Install METEOR
RUN curl "https://install.meteor.com/?release=${METEOR_VERSION}" | bash

edit не надо устанавливать bash или curl в этом изображении

Результат был бы:

usando-node-buster   latest          fbec649fea7a    836MB
node                 8-buster-slim   5369d1c14056    149MB

, Если мы делаем упражнение с изображением node:8-slim, которые он занимает, были должны stretch (она старее, но если мы будем использовать node 8, я предполагаю, что устаревание дает немного то же самое),

usando-nodeslim      latest          63f47668aec5    827MB
node                 8-slim          d370ba5bae68    139MB

PD: Есть dockerfile disney/meteor-base , чтобы делать meteor 1.8.1 с node 8, хотя он подумался, чтобы это скроллировать прямо в корне проекта. Плохое состоит в том, что он зависит от geoffreybooth/meteor-base , и рассматривая ее видно, что он зависит ubuntu, а следовательно мы говорим 1.07GB. Главным образом то, что он делает, состоит в том, чтобы загружаться ubuntu, потом meteor и сверху он помещает его node:8-alpine.

3
ответ дан 01.12.2019, 10:46
  • 1
    Привет, спасибо за ответ. Я продолжаю approach # 3 используя FROM node:10-alpine3.9, но после устанавливая все, и когда он прибывает к последнему STEP, он бросает в меня эту ошибку: Downloading Meteor distribution tar: write ошибка: Не space left on device The command '/bin/sh-c curl " install.meteor.com/?release=$ {METEOR_VERSION} " | bash' returned в нечетное число - zero code: 1 – lmendivil 27.11.2019, 20:03
  • 2
    Примени docker контейнер prune, и docker image ls. Каждая неудавшаяся попытка - 1GB к твоему диску – amenadiel 27.11.2019, 20:12
  • 3
    Спасибо, забудьте о том, что я должен устанавливать также wget. Тогда, ПЕРЕД этой линией RUN apk add - я не-разбил bash curl я ввожу ЭТОТ apk add - я не-разбил wget. Это правильный способ, правда? – lmendivil 27.11.2019, 22:16
  • 4
    и другой вопрос из-за fa, эта линия необходима? RUN apk upgrade? Я увидел в каких-то примерах, что, ЕСЛИ они помещают ее, и в других НЕ. Спасибо! – lmendivil 27.11.2019, 22:23
  • 5
    upgrade actualizará пакеты, которые приходят из основания в цену má s я вешу в твоем изображении. Я не думаю, что ты нуждаешься wget. Если está когда бьют козырем какой-то разряд из-за темы удостоверения, podrí схвати пытаться с apk update && apk add ca-certificates && update-ca-certificates && apk add openssl curl wget – amenadiel 28.11.2019, 02:07