2016-11-20 1 views
2

をドッキングウィンドウ私はドッカーイメージを作成:NPMコマンドは私のNodeJSで発見されていないが、容​​器

$ docker build -t stephaneeybert/nodejs . 
Sending build context to Docker daemon 2.56 kB 
Step 1 : FROM debian 
---> 1b088884749b 
Step 2 : RUN apt-get clean && apt-get update 
---> Using cache 
---> b12133d6342f 
Step 3 : RUN apt-get install -y curl 
---> Using cache 
---> 22dfb4882b12 
Step 4 : RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash 
---> Using cache 
---> 27f2fac45254 
Step 5 : RUN . ~/.nvm/nvm.sh; nvm install stable 
---> Using cache 
---> 20d99d545755 
Step 6 : RUN . ~/.nvm/nvm.sh; nvm use stable 
---> Using cache 
---> 9ec14efb2407 
Step 7 : RUN . ~/.nvm/nvm.sh; npm install -g npm 
---> Using cache 
---> d264d38565f3 
Step 8 : EXPOSE 9001 
---> Using cache 
---> 29e3589557e1 
Step 9 : ENTRYPOINT /usr/bin/tail -f /dev/null 
---> Using cache 
---> 2ce499300fe1 
Successfully built 2ce499300fe1 

画像スクリプトは次のとおりです。

FROM debian 

RUN apt-get clean && apt-get update 
RUN apt-get install -y curl 

# Installing nodesjs 

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

RUN . ~/.nvm/nvm.sh; nvm install stable 
RUN . ~/.nvm/nvm.sh; nvm use stable 
RUN . ~/.nvm/nvm.sh; npm install -g npm 

EXPOSE 9001 

ENTRYPOINT ["/usr/bin/tail", "-f", "/dev/null"] 

その後、私はコンテナを実行して、bashシェルを開きます。

:一度そこに

$ docker run -d -p 127.0.0.1:9001:9001 --name nodejs stephaneeybert/nodejs 
c6dddf0a5eb0f11c897f63910eb01f2868fe0f39a80e5e2a580ef3a82935b27b 
[[email protected] nodejs] 
$ docker exec -it nodejs bash 
[email protected]:/# 

は、私はバージョンを取得しよう

[email protected]:/# npm -v 
bash: npm: command not found 

npmが見つかりません。私は非existantノードのバージョンに対する別名があることを理解N/A: version "N/A" is not yet installed.

:インタラクティブシェルでコマンドを入力するときnvm use stable

は、それが次のエラーを与えます。

nvm lsコマンドショー:

[email protected]:/# nvm ls 
      N/A 
node -> stable (-> N/A) (default) 
iojs -> N/A (default) 

は、デバッガはショーにこれを持っている:

[email protected]:/# nvm debug 
nvm --version: v0.32.1 
$SHELL: /bin/bash 
$HOME: /root 
$NVM_DIR: '$HOME/.nvm' 
$PREFIX: '' 
$NPM_CONFIG_PREFIX: '' 
nvm current: none 
which node: 
which iojs: 
which npm: 
npm config get prefix: bash: npm: command not found 
npm root -g: bash: npm: command not found 

1 - 私は、各コマンドにこのスクリプト. ~/.nvm/nvm.sh;を調達する必要がどのように来ますか?

2ノード・パッケージ・マネージャーがbashシェルで見つからないのはなぜですか?

編集:私は少し変わっDockerfileファイルの内容:

RUN curl -o-https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash \ 
    && . ~/.nvm/nvm.sh \ 
    && nvm install stable \ 
    && nvm alias default stable \ 
    && nvm use default 

そして今、それを構築し、これを示しています

Step 4 :RUN curl -o https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash && . ~/.nvm/nvm.sh && nvm install stable && nvm alias default stable && nvm use default 
---> Running in 7d2c404135dd 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 10250 100 10250 0  0 18258  0 --:--:-- --:--:-- --:--:-- 18238 
=> Downloading nvm as script to '/root/.nvm' 

=> Appending source string to /root/.bashrc 
=> Close and reopen your terminal to start using nvm or run the following to use it now: 

export NVM_DIR="/root/.nvm" 
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 
######################################################################## 100.0% 
Computing checksum with sha256sum 
Checksums matched! 
Now using node v7.2.0 (npm v3.10.9) 
Creating default alias: default -> stable (-> v7.2.0 *) 
default -> stable (-> v7.2.0 *) 
Now using node v7.2.0 (npm v3.10.9) 
---> ad960a4addbe 
Removing intermediate container 7d2c404135dd 
Step 5 : EXPOSE 9001 
---> Running in df9284421302 
---> 14d386f009fb 
Removing intermediate container df9284421302 
Step 6 : ENTRYPOINT /usr/bin/tail -f /dev/null 
---> Running in fa2d71b6dfdf 
---> d02c8e88eb7f 
Removing intermediate container fa2d71b6dfdf 
Successfully built d02c8e88eb7f 

私はそれがノードV7.2.0をインストールし、使用していることがわかりますそれ。

しかし、私はコマンドdocker exec -it nodejs bashでコンテナにログインしたときに、それはどこでも任意のノードが表示されません。

[email protected]:/# nvm --version 
0.32.1 
[email protected]:/# npm --version 
bash: npm: command not found 
[email protected]:/# echo $NVM_DIR 
/root/.nvm 
[email protected]:/# ls -l /root/.nvm 
total 100 
-rwxr-xr-x 1 root root 313 Nov 26 13:01 nvm-exec 
-rw-r--r-- 1 root root 95660 Nov 26 13:01 nvm.sh 
[email protected]:/# ls -l /root/.npm 
ls: cannot access /root/.npm: No such file or directory 
+0

あります:./root/.npm/npm – Stephane

+1

nav -vの前に "nvm use stable"コマンドを実行しようとしましたか?その他の質問:ノードの公式ドッカー画像を使用してみませんか? –

+0

ご覧のとおり、このコマンド 'nvm use stable'はスクリプトの一部であり、正常に実行されました。しかし、それを対話型シェルに入力すると、次のエラーが発生します。 'N/A:version" N/A "がまだインストールされていません。' – Stephane

答えて

2

を私はノードをインストールする方法を変更し、nvmツールなしでそれをやった:

RUN curl -sL https://deb.nodesource.com/setup_7.x | bash 
RUN apt-get install -y nodejs 

コンテナにログインすると、Node実行可能ファイルが見つかります。

$ docker run -d -p 127.0.0.1:9001:9001 --name nodejs stephaneeybert/nodejs 
f3a2f054934ef92a9b05486b6f6dbe53abd4390826c06d1b7a490d671d8e3422 
[[email protected] nodejs] 
$ docker exec -it nodejs bash 
[email protected]:/# npm --version                           
3.10.9 

nvmツールを使用していたときに、クライアントシェル. ~/.nvm/nvm.sh npm --versionnpmコマンドが含まれているはずです。

関連する問題