2016-12-06 76 views
3

我使用的圖像node:6.9,我嘗試更新爲從v3到v4的npm版本。如何升級碼頭集裝箱內的npm?

我Dockerfile樣子:

npm ERR! Linux 4.4.0-51-generic 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "update" "npm" "-g" 
npm ERR! node v6.9.1 
npm ERR! npm v3.10.8 
npm ERR! path /usr/local/lib/node_modules/npm/node_modules/asap 
npm ERR! code EXDEV 
npm ERR! errno -18 
npm ERR! syscall rename 

npm ERR! EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/npm/node_modules/asap' -> '/usr/local/lib/node_modules/npm/node_modules/.asap.DELETE' 

有一個關於故宮的open github issue已經提供瞭解決方法,並且:運行

npm update -g 

時指出

FROM node:6.9 
MAINTAINER Philipp Kretzschmar <[email protected]> 
ENV TERM xterm-color 
ARG DEBIAN_FRONTEND=noninteractive 
COPY docker/.docker-bashrc /root/.bashrc 
RUN apt-get -qq update > /dev/null && \ 
    apt-get upgrade -qq > /dev/null && \ 
    apt-get install -qq rsync silversearcher-ag jq httpie vim s3cmd > /dev/null && \ 
    apt-get autoclean -qq 
RUN npm update -g # this should upgrade npm! 
RUN npm install [email protected] -g --quiet > /dev/null 

然而,它失敗使用install.sh腳本:

ADD https://www.npmjs.com/install.sh ./install.sh 
RUN sh install.sh 

這似乎下載NPM 4.0.3並安裝它,但現在NPM不能從容器內聲明開始:

$ npm 
module.js:471 
    throw err; 
    ^

Error: Cannot find module 'npmlog' 
    at Function.Module._resolveFilename (module.js:469:15) 
    at Function.Module._load (module.js:417:25) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:13 
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:75:3) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 

是NPM錯誤,並更新NPM版本有什麼解決辦法碼頭圖像的更高版本?

+0

相關:https://stackoverflow.com/questions/44269086/how-to-upgrade-npm-to-npm5-在最最新的節點 - 泊塢窗圖像 – k0pernikus

回答

0

這或者與運行順序有關。我添加了更新腳本作爲第一個命令之一:

FROM node:6.9 
MAINTAINER Philipp Kretzschmar <[email protected]> 
ENV TERM xterm-color 
ARG DEBIAN_FRONTEND=noninteractive 
ADD https://www.npmjs.com/install.sh ./install.sh 
RUN sh install.sh 

它現在工作。

它也可以在不使用緩存的情況下重建docker-container。 docker build --no-cache,但它現在對我的作品(我不知道爲什麼):

$ npm -v 
4.0.3