Я хочу установить узел 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», чтобы установить его перед использованием.
Я не уверен, нуждаешься ли ты специально в версии 8.15. Но принимая, что так был, первая проблема состоит в том, чтобы использовать alpine
.
Альпине Линукс, 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.
apk update && apk add ca-certificates && update-ca-certificates && apk add openssl curl wget
– amenadiel 28.11.2019, 02:07