Dok में nvm कैसे स्थापित करें?


101

मैं एक नई डॉकर छवि बनाने की प्रक्रिया में हूं और मैं एनवीएम स्थापित करना चाहता हूं ताकि मैं नोडज का प्रबंधन कर सकूं।

एनवीएम को स्थापित करने के तरीके पर डॉक्स को पढ़कर वे उल्लेख करते हैं कि एनवीएम का उपयोग शुरू करने के लिए आपको अपनी .bashrc फ़ाइल को स्रोत करने की आवश्यकता है।

मैंने इसे एक डॉकफ्राइल में स्थापित करने की कोशिश की है, लेकिन अभी तक इमारत त्रुटि के साथ विफल रही है:

"बैश: एनवीएम: कमांड नहीं मिला"

यहाँ मेरी डॉकफाइल से प्रासंगिक पंक्तियाँ हैं:

ADD files/nvm_install.sh /root/
RUN chmod a+x  /root/nvm_install.sh
RUN bash -c "/root/nvm_install.sh"
RUN bash -l -c "source /root/.bashrc"
RUN cd /root
RUN bash -l -c "nvm install 0.10.31"

यहाँ निर्माण करने की कोशिश से उत्पादन है:

docker बिल्ड -t nginx_dock

Step 0 : FROM ubuntu
---> 826544226fdc
Step 1 : MAINTAINER dficociello
---> Using cache
---> da3bc340fbb3
Step 2 : RUN apt-get update
---> Using cache
---> 6b6b611feb4f
Step 3 : RUN apt-get install nginx curl -y
---> Using cache
---> 159eb0b16d23
Step 4 : RUN touch /root/.bashrc
---> Using cache
---> 5e9e8216191b
Step 5 : ADD files/nginx.conf /etc/nginx/
---> Using cache
---> c4a4a11296a2
Step 6 : ADD files/nvm_install.sh /root/
---> Using cache
---> b37cba2a18ca
Step 7 : RUN chmod a+x  /root/nvm_install.sh
---> Using cache
---> bb13e2a2893d
Step 8 : RUN bash -c "/root/nvm_install.sh"
---> Using cache
---> 149b49a8fc71
Step 9 : RUN bash -l -c "source /root/.bashrc"
---> Running in 75f353ed0d53
---> 0eae8eae7874
Removing intermediate container 75f353ed0d53
Step 10 : RUN cd /root
---> Running in feacbd998dd0
---> 284293ef46b0
Removing intermediate container feacbd998dd0
Step 11 : RUN bash -l -c "nvm install 0.10.31"
---> Running in 388514d11067
bash: nvm: command not found
2014/09/17 13:15:11 The command [/bin/sh -c bash -l -c "nvm install 0.10.31"] returned a non-zero         code: 127

मैं डॉकर के लिए बहुत नया हूं इसलिए मुझे डॉकफाइल्स लिखने के लिए कुछ मौलिक याद आ रही है, लेकिन अब तक मैंने जो भी पढ़ा है, उसने मुझे एक अच्छा समाधान नहीं दिखाया है।


11
डुप्लीकेट के रूप में स्थापित करने के लिए विशेष रूप से एक डुप्लिकेट नहीं है और एक मानक स्थापित नहीं है
डेविड फिकोसिलो

चूंकि आप केवल नोड का एक ही संस्करण स्थापित कर रहे हैं, यह एनवीएम स्थापित करने के लिए अनावश्यक लगता है। डॉकर नोड रिपॉजिटरी द्वारा प्रदान की गई डॉकरीफाइल्स का उपयोग नोड को कैसे स्थापित किया जाए, इसके संदर्भ के रूप में किया जा सकता है।
मिकवात

जवाबों:


121

जब आप RUN bash...हर बार एक अलग प्रक्रिया में चलते हैं, तो वातावरण में कुछ भी निर्धारित नहीं होता है। यहां बताया गया है कि मैं कैसे स्थापित करता हूं nvm:

# Replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# Set debconf to run non-interactively
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections

# Install base dependencies
RUN apt-get update && apt-get install -y -q --no-install-recommends \
        apt-transport-https \
        build-essential \
        ca-certificates \
        curl \
        git \
        libssl-dev \
        wget \
    && rm -rf /var/lib/apt/lists/*

ENV NVM_DIR /usr/local/nvm # or ~/.nvm , depending
ENV NODE_VERSION 0.10.33

# Install nvm with node and npm
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash \
    && . $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION \
    && nvm alias default $NODE_VERSION \
    && nvm use default

ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH      $NVM_DIR/v$NODE_VERSION/bin:$PATH

इसे दो बार में बदलने के v0.20.0लिए बस बदल देंv0.24.1
इसके

8
nvm 0.31.0और नोड v4.2.3के साथ रास्ता है/usr/local/nvm/versions/node/v4.2.3/bin
cwhsu

4
@thiagoh यह नहीं समझाता है कि प्रश्नकर्ता की एनवीएम की स्थापना क्यों काम नहीं करती है और काम के जवाब काम नहीं करते हैं। इसका अलग-अलग प्रक्रियाओं में चलने वाले गोले से कोई लेना-देना नहीं है। ऐसा इसलिए है क्योंकि सवाल nvm.sh फाइल को लोड करने के लिए bash.rc सोर्स करने का प्रयास करता है, जो nvm कमांड को bash में लोड करता है, लेकिन bash.rc गैर-संवादात्मक रूप से चलने पर जल्दी बाहर निकल जाता है, इसलिए nvm कमांड लोड नहीं होता है। सभी सफल उत्तर स्रोत bv.rc. के माध्यम से करने के बजाय सीधे nvm.sh यह इस काम को बनाने की कुंजी है।
तोबसुलेवेन

2
बाश के साथ श की जगह, आप बस कर सकते हैं . $NVM_DIR/nvm.sh, स्रोत बाइनरी से बचते हुए।
रज़वान ग्रिगोर

3
यह करीब है, लेकिन पथ एक छोटे से समायोजन की जरूरत है, होना चाहिए: ENV NODE_PATH $ NVM_DIR / संस्करणों / नोड / v $ NODE_VERSION / lib / node_modules ENV पथ $ NVM_DIR / संस्करणों / नोड / v $ NODE_VERSION / बिन: $ पथ
Lunulata

31

उन सभी की मदद करने के लिए जो उबंटू (अंतिम संस्करण) पर एनवीएम के साथ Node.js को स्थापित करने का तरीका ढूंढ रहे हैं, मैंने नीचे डॉकरफाइल बनाया। मैं Docker, Ubuntu, Node.js के अंतिम संस्करण का उपयोग कर रहा हूं और NVM ठीक से काम कर रहा है ($ PATH तय हो गया था)। मैं उत्पादन वातावरण में इसका उपयोग कर रहा हूं।

$ docker info \
Server Version: 1.9.1
Kernel Version: 4.1.13-boot2docker
Operating System: Boot2Docker 1.9.1 (TCL 6.4.1); master : cef800b - Fri Nov 20 19:33:59 UTC 2015

Node.js Version: stable 4.2.4 LTS
Ubuntu Version: 14.04.3


dockerfile:

FROM ubuntu:14.04.3

# Replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# make sure apt is up to date
RUN apt-get update --fix-missing
RUN apt-get install -y curl
RUN apt-get install -y build-essential libssl-dev

ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 4.2.4

# Install nvm with node and npm
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash \
    && source $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION \
    && nvm alias default $NODE_VERSION \
    && nvm use default

ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH      $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH

RUN mkdir /usr/app
RUN mkdir /usr/app/log

WORKDIR /usr/app

# log dir
VOLUME /usr/app/log

# Bundle app source
COPY . /usr/app
# Install app dependencies
RUN npm install

EXPOSE  3000
CMD ["node", "server.js"]

1
NODE_PATH ENV NODE_PATH $ NVM_DIR / संस्करणों / नोड / v $ NODE_VERSION / lib / node_modules नहीं होना चाहिए
संवेदनशील

नमस्कार @Sentient! मैं एक उत्पादन वातावरण (ubuntu) और स्थानीय देव (OSX) में इस डॉक को चला रहा हूं, दोनों बिना त्रुटियों के ठीक से काम कर रहे हैं। क्या आप एक पुरानी NVM चला रहे हैं?
डैनिलोडेवलपेर

क्या ऐसा कोई कारण है कि मुझे बिल्ड-एसेंशियल और लिबासएल-देव को स्थापित करने के लिए सूदो का उपयोग करना चाहिए? मैं एक अनुभवी DevOps बिल्कुल नहीं हूं।
a.bbieri

1
कुंजी हैsource $NVM_DIR/nvm.sh && nvm install $NODE_VERSION
व्लादिमीर कोर्ना

24

एनवीएम पथ स्वीकार किए गए उत्तर के बाद बदल गए हैं, इसलिए यदि आप अधिक अद्यतित एनवीएम संस्करण का उपयोग करना चाहते हैं, तो आपको कुछ बदलाव करने की आवश्यकता है। इसके अलावा, shइसे काम करने के लिए फिर से तैयार करना आवश्यक नहीं है :

ENV NVM_DIR /usr/local/nvm
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
ENV NODE_VERSION v7.9.0
RUN /bin/bash -c "source $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use --delete-prefix $NODE_VERSION"

ENV NODE_PATH $NVM_DIR/versions/node/$NODE_VERSION/lib/node_modules
ENV PATH      $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH

यकीन नहीं है कि अगर आपको --delete-prefixविकल्प की आवश्यकता होगी nvm use- मैंने किया, लेकिन मेरी आधार छवि के बारे में कुछ अजीब हो सकता है।


1
जीवन रक्षक! यदि केवल मैंने 3 घंटे पहले आपकी प्रतिक्रिया देखी थी।
एड्रियन मारिनिका

मेरे लिए काम किया, आधार चित्र php: 7.1.1
टोबी मेलोर

18

RUNडॉकफाइल में प्रत्येक को एक अलग कंटेनर में निष्पादित किया जाता है। इसलिए यदि आप एक कंटेनर में एक फ़ाइल स्रोत करते हैं, तो इसकी सामग्री अगले एक में उपलब्ध नहीं होगी।

इसीलिए जब आप एक एप्लिकेशन इंस्टॉल करते हैं और आपको कई चरणों को करने की आवश्यकता होती है, तो आपको इसे उसी कंटेनर में करना होगा।

अपने उदाहरण के साथ:

ADD files/nvm_install.sh /root/
RUN chmod a+x /root/nvm_install.sh && \
  /root/nvm_install.sh && \
  source /root/.bashrc && \
  cd /root && \
  nvm install 0.10.31

ठीक है, स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। इसलिए मैंने इस तरह दिखने के लिए अपनी स्क्रिप्ट को संशोधित किया है: `FUB ubuntu MAINTAINER dficociello ADD फ़ाइलें / nvm_install.sh / root / # स्थापित करें nvm RUN [" / bin / bash "," -c "," rm -f / etc / / nginx / nginx.conf && टच /root/.bashrc && apt-get update && apt-get install स्थापित करें nginx कर्ल -y और& chmod a + x /root/nvn_install.sh && source/root/.bashrc &&/ रूट / nvm_install। sh && nvm इंस्टॉल करें 0.10.31 "] ADD फाइलें / nginx.conf / etc / nginx / EXPOSE 22` मुझे निम्न त्रुटि मिलती है: `/ बिन / bash: /root/nvm_install.sh: / bin / bash: खराब दुभाषिया: पाठ फ़ाइल व्यस्त `
डेविड फिकोसिलो

यह त्रुटि आपकी लाइन से जुड़ी होनी चाहिए RUN ["/bin/bash", ...]। यह घिरा नहीं होना चाहिए [...]और आपको दुभाषिया को निर्दिष्ट करने की आवश्यकता नहीं है /bin/bash -c
कुहेस

17

यह 2018 में शीर्ष उत्तर और कार्यों पर आधारित है:

# Replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# Install base dependencies
RUN apt-get update && apt-get install -y -q --no-install-recommends \
        apt-transport-https \
        build-essential \
        ca-certificates \
        curl \
        git \
        libssl-dev \
        wget

ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 8.11.3

WORKDIR $NVM_DIR

RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash \
    && . $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION \
    && nvm alias default $NODE_VERSION \
    && nvm use default

ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules
ENV PATH      $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH

ध्यान दें कि nvmबैश कमांड नहीं है, यह एक उपनाम है। यदि आप पर भरोसा कर रहे हैं तो यह आपको परेशान कर सकता है $PATH


15

अपडेट 20/02/2020 : यदि आप debianआधार छवि का उपयोग कर रहे हैं तो यह समाधान काम करता है । यदि आप उपयोग कर रहे हैं ubuntu, तो यह उत्तर देखें ।

यहाँ स्थापित करने का सबसे साफ तरीका है nvm:

SHELL ["/bin/bash", "--login", "-c"]

RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
RUN nvm install 10.15.3

व्याख्या

  • पहली पंक्ति डॉकरीफाइल के डिफ़ॉल्ट शेल को बैश लॉगिन शेल पर सेट करती है । नोट: इसका मतलब है कि प्रत्येक बाद RUNमें CMD, और ENTRYPOINTवर्तमान उपयोगकर्ता (आमतौर पर रूट) के तहत चलाया जाएगा , और शेल रूप में चलने पर ~ / .bashrc फ़ाइल को स्रोत ।

  • दूसरी पंक्ति nvmबैश के साथ स्थापित होती है। जब स्क्रिप्ट को बैश के साथ चलाया जाता है, तो यह ~ / .bashrc फ़ाइल में जुड़ जाता है।

  • तीसरी पंक्ति नोड्ज का एक विशेष संस्करण स्थापित करती है और इसका उपयोग करती है। nvm, npm, और nodeआदेशों उपलब्ध हैं क्योंकि वे एक पार्टी लॉगिन खोल (लाइन 1 देखें) के माध्यम से चलाए जा रहे हैं।


1
आपको बहुत - बहुत धन्यवाद !
गौई

दिलचस्प है कि यह आपके लिए काम कर रहा था। मैंने कुछ इसी तरह की कोशिश की और बिल्ड के दौरान सबकुछ ठीक लग रहा था, लेकिन जब परिणामी छवि को चलाने के लिए एनपीएम नहीं मिला। स्पष्ट NVM_DIRरूप से सेटिंग (जैसा कि कई अन्य उत्तरों में दिखाया गया है) ने इसे मेरे लिए निर्धारित किया।
कृपया

1
@esmail अजीब है क्योंकि पहला RUNकमांड सेट होता NVM_DIRहै ~/.bashrc
डोमिनिक रॉय-स्टैंग

1
@ डॉमिनिकॉय-स्टैंग, मान्य बिंदु। छवि मैं उपयोग के साथ काम कर रहा था shऔर इसलिए अनदेखा करता है .bashrc। इसके अलावा, क्या आप सुनिश्चित हैं कि आदेशों .bashrcको निष्पादित करने से पहले वास्तव में खट्टा हो गया है RUN? आधिकारिक bashछवि के साथ मेरे संक्षिप्त परीक्षण में , ऐसा लग रहा था कि यह नहीं था।
कृपया

1
@ ईमेल यह है कि पहली पंक्ति ( SHELLनिर्देश) क्या है। यह लगातार रन कमांड एक लॉगिन शेल का उपयोग करता है जो .bashrcफ़ाइल का स्रोत है । नोट: यह केवल तभी काम करता है जब कमांड शेल मोड में चलाए जाते हैं। RUN nvm --version। यदि कमांड एग्जीक्यूट मोड में चलाए जाते हैं तो यह काम नहीं करेगा। RUN ["nvm", "--version"]। मैंने शेल लिंक के लिए प्रदान किए गए लिंक को अपडेट कर दिया है ताकि उम्मीद है कि यह अधिक स्पष्ट हो सके।
डोमिनिक रॉय-स्टैंग

10

@Kuhess उत्तर में सुझाव के आधार पर, मैंने अपने डॉकेरफाइल में निम्नलिखित के साथ स्रोत कमांड को बदल दिया

RUN cat ~/.nvm/nvm.sh >> installnode.sh
RUN echo "nvm install 0.10.35" >> installnode.sh
RUN sh installnode.sh

8

यहां मेरा वर्किंग वर्जन है

FROM ubuntu:14.04

# Declare constants
ENV NVM_VERSION v0.29.0
ENV NODE_VERSION v5.0.0

# Replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# Install pre-reqs
RUN apt-get update
RUN apt-get -y install curl build-essential

# Install NVM
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/${NVM_VERSION}/install.sh | bash

# Install NODE
RUN source ~/.nvm/nvm.sh; \
    nvm install $NODE_VERSION; \
    nvm use --delete-prefix $NODE_VERSION;

@Abdulljibali और @shamisis के जवाबों से मदद ली।


~/.nvm/nvm.shफ़ाइल की सोर्सिंग वह कुंजी थी जिसकी मुझे आवश्यकता थी।
स्टीफन

यह एकमात्र समाधान था जिसने ubuntu 16.04.2 कंटेनर के साथ मेरे लिए काम किया।
११ बजे ०१

7

मुझे इस तथ्य से शुरू करना चाहिए कि मैंने nvmअंदर काम करने का उदाहरण पाने के लिए सभी खोज की dockerऔर मुझे कोई नहीं मिला। यहां तक ​​कि इस सूत्र में उत्तर भी काम नहीं आया।

इसलिए, मैंने काफी समय बिताया और एक के साथ आया जो काम करता है:

# install dependencies
RUN apt-get update && apt-get install -y \
      curl \
      npm \
      nodejs \
      git;

# compatibility fix for node on ubuntu
RUN ln -s /usr/bin/nodejs /usr/bin/node;

# install nvm
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.24.1/install.sh | sh;

# invoke nvm to install node
RUN cp -f ~/.nvm/nvm.sh ~/.nvm/nvm-tmp.sh; \
    echo "nvm install 0.12.2; nvm alias default 0.12.2" >> ~/.nvm/nvm-tmp.sh; \
    sh ~/.nvm/nvm-tmp.sh; \
    rm ~/.nvm/nvm-tmp.sh;

सूचना कैसे मैं स्थापित किया है nodejsके माध्यम से apt-getके रूप में अच्छी तरह से। मैंने पाया कि कुछ पैकेज डॉक के अंदर स्थापित नहीं होते हैं जब तक कि ऐसा नहीं किया जाता है।


हाँ - आदमी - के बारे में एक 100 समाधान की कोशिश की और केवल तुम्हारा काम करता है - 10x!
srfrnk

~ / .Nvm / nvm-tmp.sh का उपयोग करने के लिए सही है, इसलिए नोड संस्करण ~ / .nvm निर्देशिका के अंदर सही ढंग से स्थापित किए गए हैं
गाइडमैन

6

प्रश्न में एनवीएम कमांड प्राप्त करने के प्रयास के बीच एक महत्वपूर्ण अंतर:

RUN bash -l -c "source /root/.bashrc"

जो काम नहीं करता है और स्वीकृत उत्तर में भी ऐसा करने का प्रयास करता है:

source $NVM_DIR/nvm.sh

क्या दूसरा संस्करण सीधे nvm.sh स्क्रिप्ट का स्रोत है, जबकि मूल इसे .bashrc फ़ाइल के माध्यम से करने की कोशिश करता है।

.Bashrc फ़ाइल में इसकी एक पंक्ति है, जिस पर यह गैर-संवादात्मक शेल में चलाया जा रहा है, तो बाहर निकलता है:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
    *) return;;
esac

तो यह कभी नहीं मिलता है जहां यह nvm.sh होता है जो वास्तव में आपके शेल में nvm कमांड डालता है।

मुझे आश्चर्य नहीं होगा कि क्या डॉकर्स इस सामग्री को एक गैर-संवादात्मक शेल में चला रहा है। यह स्पष्ट रूप से इंगित नहीं किया गया था, इसलिए मुझे लगा कि मैं इसका उल्लेख करूंगा क्योंकि जब मैंने आवारा के साथ कुछ ऐसा ही किया था, तो उसने मुझे पकड़ लिया था।


समस्या के स्रोत को खोजने के लिए धन्यवाद। मैंने आधार ubuntu 19.10 छवि से बाहर /etc/skel/.bashrc फ़ाइल की प्रतिलिपि बनाई और फिर ऊपर उल्लिखित पंक्तियों के बारे में टिप्पणी की। फिर मेरे डॉकरफाइल में, मैंने "सही" /etc/skel/.bashrc to / etc / skel की प्रतिलिपि बनाने के लिए COPY कमांड का उपयोग किया और उसके बाद केवल शेल के साथ उपयोगकर्ताओं को बनाने के लिए RUN / बिन / बैश का उपयोग किया। फिर बाद में RUN ["/ bin / bash", "-c", "-l", Your_COMMAND [S] _HERE] पर काम किया।
Stephan Doliov

6

मुझे एक या दो घंटे का समय निकालकर इसे करने का सबसे स्वच्छ तरीका बताया। -login निष्पादित करने के लिए प्रतीत नहीं होता है। तो आप इसे इंटरेक्टिव मोड में लॉन्च करने के लिए -i आपूर्ति करना होगा। यह आपके लिए थोड़ा डॉक करने का कारण बनता है इसलिए मैं केवल इंस्टॉलेशन के लिए इस तरह लॉन्च करता हूं, फिर अपने मानक शेल पर रीसेट कर देता हूं।

# Installing Node
SHELL ["/bin/bash", "--login", "-i", "-c"]
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
RUN source /root/.bashrc && nvm install 12.14.1
SHELL ["/bin/bash", "--login", "-c"]

आपके उत्तर ने मुझे एहसास दिलाया कि मेरा ubuntuआधार छवि के रूप में काम नहीं करता (लेकिन आपका होता है)। मैं debianआधारित चित्रों का उपयोग कर रहा था । मुझे यकीन नहीं है कि दोनों के बीच विसंगति क्या है। कोई विचार?
डोमिनिक रॉय-स्टैंग

मैं आधार छवि के रूप में ubuntu 19:10 का उपयोग कर रहा हूं। मैं सभी प्रासंगिक डॉकर निर्देशों को पोस्ट करूंगा ताकि आपको इस बात का अंदाजा हो कि मेरे लिए क्या काम करता है। मेरे द्वारा छोड़ा गया कोई भी निर्देश प्रासंगिक नहीं है या मैं प्रदान नहीं कर सकता। मैं एक टिप्पणी के साथ उनका प्रतिनिधित्व करता हूँ। मैं इसे अगली टिप्पणी में पोस्ट करूंगा क्योंकि चरित्र सीमा बहुत कम है
user2896438

4

इनमें से किसी ने भी मेरे लिए काम नहीं किया, मेरे python3-onbuildकंटेनर के लिए मुझे एनवीएम इंस्टॉलेशन के लिए प्रतीकात्मक लिंक बनाने के लिए मजबूर करना पड़ा।

# Install npm and nodejs
RUN apt-get install -y build-essential libssl-dev

RUN mkdir /root/.nvm
ENV NVM_DIR /root/.nvm
ENV NODE_VERSION 8.9.4

RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.9/install.sh | bash
RUN chmod +x $HOME/.nvm/nvm.sh
RUN . $HOME/.nvm/nvm.sh && nvm install $NODE_VERSION && nvm alias default $NODE_VERSION && nvm use default && npm install -g npm

RUN ln -sf /root/.nvm/versions/node/v$NODE_VERSION/bin/node /usr/bin/nodejs
RUN ln -sf /root/.nvm/versions/node/v$NODE_VERSION/bin/node /usr/bin/node
RUN ln -sf /root/.nvm/versions/node/v$NODE_VERSION/bin/npm /usr/bin/npm

माना। एक डॉकटर कंटेनर (डेबियन जीएनयू / लिनक्स 9 (स्ट्रेच)) में स्थापित करते समय, एनवीएम $HOME/.nvmमेरे लिए भी समाप्त होता है ।
डेव स्टीवंस

हां, मेरे साथ जोड़ने के लिए प्रतीकात्मक लिंक आवश्यक थे। मैं सोच रहा हूं कि दूसरों को भी इसकी आवश्यकता नहीं थी।
PEZO

0

यह मेरे लिए काम कर रहा है (मैं डेबियन बस्टर का उपयोग कर रहा हूं):

RUN apt-get update
RUN apt-get install -y build-essential checkinstall libssl-dev
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash
SHELL ["/bin/bash", "--login", "-c"]

अब आपको करने में सक्षम होना चाहिए nvm install <version>


0

बस एक उत्तर ने कर्ल इंस्टॉलेशन को रखा लेकिन पूरे डॉकरीफाइल पर काम नहीं करता है

यहाँ मेरा डॉकरीफाइल कॉपी / पेस्ट करने के लिए तैयार है जिसमें मैं उबंटू 18.04.3 एलटीएस के साथ नवीनतम एनवीएम 2020 संस्करण स्थापित करता हूं

FROM ubuntu

RUN apt-get update
RUN echo "y" | apt-get install curl
ENV NVM_DIR /usr/local/nvm
RUN mkdir -p /usr/local/nvm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
ENV NODE_VERSION v10
RUN /bin/bash -c "source $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use --delete-prefix $NODE_VERSION"

ENV NODE_PATH $NVM_DIR/versions/node/$NODE_VERSION/lib/node_modules
ENV PATH      $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.